5

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

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

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

如果可能的话,我该怎么做?

我从 core.logic 源代码中看到,有许多协议看起来可以很好地扩展(例如IUnifyTermsIReifyTerms等等),但并不完全清楚这些协议是如何使用的,以及哪些是我真正的需要延长。

4

1 回答 1

1

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

于 2013-03-29T14:12:12.740 回答