Я экспериментирую с core.logic и хочу, чтобы мой собственный тип данных участвовал в логические выражения:
(deftype Expression [node vars]
....)
В основном это представляет собой узел в дереве математических выражений, содержащий дерево узлов и набор используемых несвязанных переменных. node
является константой, символом или (Operator Expression Expression....)
узлом дерева. Я хотел бы иметь возможность использовать core.logic для управления математическими выражениями и сопоставления с поддеревьями таких выражений.
Как я могу это сделать, если это возможно?
Из исходного кода core.logic я вижу, что есть файл количество протоколов, которые кажутся полезными для расширения (например, IUnifyTerms
, IReifyTerms
и т. д.), но не совсем понятно, как все они предназначены для использования и какие из них я очень нужно продлить.