我正在试验core.logic,并希望启用我自己的自定义数据类型来参与逻辑表达式:
(deftype Expression [node vars]
....)
基本上,这表示数学表达式树中的节点,包含节点树和一组未使用的未绑定变量。 node
是常量,符号或(Operator Expression Expression....)
树节点。我希望能够使用core.logic来操纵数学表达式,并匹配这些表达式的子树。
如果可能,我该怎么做?
我从core.logic源代码中看到,有一个number of protocols看起来好像可以扩展(例如IUnifyTerms
,IReifyTerms
等等。但它并不完全明确这些是如何使用的,以及我真正需要扩展哪些。
答案 0 :(得分:1)
core.logic旨在可扩展到自定义类型。然而,由于我们了解到究竟需要什么,因此协议可能会发生变化,因此没有详细记录。值得检查clojure.core.logic.nominal
命名空间,以了解将core.logic扩展到自定义类型所需的内容。