我知道core.logic中的project不是关系型的。
然而,似乎我可以通过在conda中双向投影来获得类似关系的行为,例如:
(defn lifto-with-inverse
"Lifts a unary function and its inverse into a core.logic relation."
([f g]
(fn [& vs]
(let [[x y] vs]
(conda
[(pred x number?) (project [x] (== y (f x)))]
[(pred y number?) (project [y] (== x (g y)))])))))
(let [inco (lifto-with-inverse inc dec)]
(run* [q] (inco q 3)))
=> 2这算不算关系操作?或者,是否还缺少其他使其成为非关系型的东西?
发布于 2013-04-01 04:05:03
似乎在这种情况下,其中一个参数必须是有根据的,使它不是相关的。
https://stackoverflow.com/questions/15727088
复制相似问题