1

我知道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

这算作关系操作吗?还是缺少其他东西使这种非关系性?

4

1 回答 1

3

在这种情况下,似乎其中一个论点必须是基础的,使其与非关系型无关。

于 2013-03-31T20:05:02.663 回答