2024 Clojure现状调查!中分享您的想法。

欢迎!请参阅关于页面了解此工作的详细信息。

0投票
core.logic

在为 core.logic 实现静态分析时,这个宏有些有用。

(defmacro ==>> (expr-in & rel-forms)
通过 rel-forms 将 expr-in 线程化,然后与最后 rel-forms 的
("输出表达式的")统一。

示例

 (==>> (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 报告)
...