1
core.logic의 project
은 관계형이 아니라는 것을 알고 있습니다.두 방향으로 투영하면 core.logic에서 관계형으로 계산됩니까?
그러나, 내가, 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
합니까 관계형 작업으로이 계산? 아니면이 관계형이 아닌 다른 것이 있습니까?