这个宏在用 core.logic 实施编译器静态分析时相当有用。
(defmacro ==>> (link: expr-in & rel-forms)
"通过 rel-forms 将 expr-in 线程化,然后与最后一个 rel-forms
('oul表达式')统一。
示例
(==>> (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/->,每个表达的返回值是
下一个表达式的第一个参数。