我正在试验core.logic,并希望使我自己的自定义数据类型能够参与逻辑表达式:
(deftype Expression [node vars]
....)
基本上,这表示数学表达式树中的一个节点,包含一个节点树和一组使用的未绑定变量。node
是常量、符号或(Operator Expression Expression....)
树节点。我希望能够使用 core.logic 来操作数学表达式,并匹配此类表达式的子树。
如果可能的话,我该怎么做?
我从 core.logic 源代码中看到,有许多协议看起来可以很好地扩展(例如IUnifyTerms
,IReifyTerms
等等),但并不完全清楚这些协议是如何使用的,以及哪些是我真正的需要延长。