2024 年 Clojure 调查问卷! 分享您的想法。

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

0
core.logic

当我在使用clojure的逻辑工具(core.logic)实现编译器静态分析时,这个宏有点有用。

(defmacro ==>> (link: 表达式-in & 关系形式)
"通过关系形式线程表达式-in,然后与最后一个关系形式(即将的'输出表达式')统一。
。)

示例

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