请在2024 年 Clojure 状态调查中分享您的想法!

欢迎!有关如何使用本页面的更多信息,请参阅关于 页面。

0
core.logic

在为 core.logic 进行静态分析时,这个宏有些有帮助。

(defmacro ==>> (link: expr-in & rel-forms)
将 expr-in 穿过 rel-forms 并与最后的 rel-forms(即 'out 表达式')统一。

示例

 (==>> (link: [1]) (firsto) (firsto) x))
 ;; 'x' will become bound to value 1

这个宏展开后为
(fresh (link: _A _B)

 (firsto (link: [1])  _A)
 (firsto _A     _B)
 (==     _B     q))

如果您想象一下 firsto 的 '返回值' 是其最后一个参数,
那么它就与 clojure.core/-> 相似,因为每个表达式的返回值是
下一个表达式的第一个参数。

3 个答案

0

评论人:jasonjckn

可能有一个更好的名字,我不确定。

0

评论人:jasonjckn

将 ==>> 改为 ==>

0
参考:https://clojure.atlassian.net/browse/LOGIC-38(由 jasonjckn 报告)
...