версия 2.0.2.3 альфа.
Ура! свершилось то чего я так давно хотел и боялся одновременно
В интерпретатор добавлена логика бинарных отношений!
Добавлен новый объектный тип "отношение", необходимый для указания отношений между объектами.
Выражение отношения строится по шаблону [A - R - B], или [A - R - p - B], где:
A - субъект отношения, допустимо любое объектное значение.
B - объект отношения, допустимо любое объектное значение.
R - отношение, допустимо только значение типа "отношение".
p - предлог.
Значение типа отношение создаётся по шаблону [отношение R] или [отношение R флаги], где:
отношение - ключевое слово
R - имя отношения
флаги - неразрывная строка, определяющая специальные свойства этого отношения. Может включать символы:
- 11 - отношение один к одному
- 18 - отношение один ко многим
- 81 - отношение многие к одному
- 88 - отношение многие ко многим
- t или т - транзитивность
- s или с - симметричность
- as или ас - антисимметричность
- r или p - рефлексивность
- ar или аp - антирефлексивность
указание флагов такой строкой, видимо, простое временное решение.
Добавлено событие нет_отношения(), которое позволяет вычислять те отношения, которые не указаны напрямую.
Логика отношений - тема крупная, пока сделано гораздо меньше чем хотелось бы...
В частности:
Предлоги распознаются, но их смысл игнорируется. "Яблоко лежит на столе" и "яблоко лежит под столом" пока что для системы одно и то же.
Отношения не являются полиморфичными. А должны бы...
В общем смотрите демку. Теперь работают вопросы вида:
>в рюмочной есть водка?
>ты находишься на улице?
>в полной рюмке водка?
>водка содержится в запотевшей рюмке?
>на тебе салфетка?
и т.п.