将core.logic扩展为自定义类型

时间:2013-03-24 00:31:25

标签: clojure protocols logic-programming clojure-core.logic

我正在试验core.logic,并希望启用我自己的自定义数据类型来参与逻辑表达式:

(deftype Expression [node vars]
  ....)

基本上,这表示数学表达式树中的节点,包含节点树和一组未使用的未绑定变量。 node是常量,符号或(Operator Expression Expression....)树节点。我希望能够使用core.logic来操纵数学表达式,并匹配这些表达式的子树。

如果可能,我该怎么做?

我从core.logic源代码中看到,有一个number of protocols看起来好像可以扩展(例如IUnifyTermsIReifyTerms等等。但它并不完全明确这些是如何使用的,以及我真正需要扩展哪些。

1 个答案:

答案 0 :(得分:1)

core.logic旨在可扩展到自定义类型。然而,由于我们了解到究竟需要什么,因此协议可能会发生变化,因此没有详细记录。值得检查clojure.core.logic.nominal命名空间,以了解将core.logic扩展到自定义类型所需的内容。