EditWYSIWYGAttachPrintable
r1 - 27 Apr 2008 - 13:49:14 - Artem ShvorinYou are here: TWiki >  XSG Web > TheoryOfEverything

Формальное описание

Данные

Предлагаю некоторое обобщение того, что сейчас есть в XSG. Так будет проще, а для утилитарных целей можно будет опять внести ограничения вплоть до строгой типизации.

Итак, язык не типизированный (забегая вперед скажу, что типизацию, точнее типизации , можно будет добавлять потом). Имеется конечный набор атомов (нет конструкторов фиксированной ненулевой арности), из них можно составлять кортежи произвольной длины. Есть также скобки, с помощью которых строятся деревья произвольной глубины. Кроме того, как и в хаскеле, допускаются деревья бесконечной глубины, которые строятся с помощью специальных связывающих переменных (пока не придумалось хорошего названия для этих переменных, но хочется, чтобы они не смешивались с другими переменными, которые появятся позже).

Всё это выглядит примерно так.

EXPR ::= ATOM
   | TUPLE
   | LINK_VAR

TUPLE ::= '(' EXPR* ')'

BINDING ::= LINK_VAR ':=' EXPR

VALUE ::= EXPR
   | EXPR 'with' BINDING*

Здесь для выражение связывания переменных специально используется слово with , а не where , поскольку where будет использоваться с клэшами. Пока рассматриваем только такие значения, в которых все переменные связаны, при этом запрещены "связывания" типа x := x.

Наличие 1-кортежей (синглетов) и 0-кортежей -- вопрос удобства; для дальнейшего изложения это неважно.

Домены

Далее вводится важное понятие, которое, кажется, явно не было сформулировано в XSG, однако неявно в нем присутствует.

Домен (domain) -- это (перечислимое) множество значений. (Андрей как-то говорил про мультимножества; можно попробовать и их, только не очень ясно, что будет, если добавить отрицания.) Ключевым вопросом является способ задания доменов. Здесь мы получаем набор языков в зависимости от выбора. Однако всякий способ задания должен быть внутренне согласован. Я придумал использовать слово алгебра , которое описывает принципы такого задания.

(Продолжение следует...)

-- Artem Shvorin - 27 Apr 2008

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r3 < r2 < r1 | More topic actions...
 
Powered by TWiki

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback