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