Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 核心逻辑不完全结果_Clojure_Clojurescript_Clojure Core.logic - Fatal编程技术网

Clojure 核心逻辑不完全结果

Clojure 核心逻辑不完全结果,clojure,clojurescript,clojure-core.logic,Clojure,Clojurescript,Clojure Core.logic,我正在努力解决这个简单的关系,结果是不完整的,我不明白为什么 我从core.logic开始,我不知道这是一个bug还是我对它的理解不好 (require '[clojure.core.logic :as l]) (require '[clojure.core.logic.fd :as fd]) (defn zip+o [x y z] (l/conde [(l/== () x) (l/== () y) (l/== () z)] [(l/fresh [fx rx fy ry f

我正在努力解决这个简单的关系,结果是不完整的,我不明白为什么

我从core.logic开始,我不知道这是一个bug还是我对它的理解不好

(require '[clojure.core.logic :as l])
(require '[clojure.core.logic.fd :as fd])

(defn zip+o [x y z]
  (l/conde
    [(l/== () x) (l/== () y) (l/== () z)]
    [(l/fresh [fx rx fy ry fz rz]
              (l/conso fx rx x)
              (l/conso fy ry y)
              (l/conso fz rz z)
              (fd/in fx fy fz (fd/interval 10))
              (fd/+ fx fy fz)
              (zip+o rx ry rz))]))

; the same with defne macro
(comment
  (l/defne zip+o [x y z]
           ([() () ()])
           ([[fx . rx]
             [fy . ry]
             [fz . rz]]
             (fd/in fx fy fz (fd/interval 10))
             (fd/+ fx fy fz)
             (zip+o rx ry rz))))

(def expected-solutions
  #{{:x [0 0] :y [1 1]}
    {:x [0 1] :y [1 0]}
    {:x [1 1] :y [0 0]}
    {:x [1 0] :y [0 1]}})

(l/run* [q]
        (l/fresh [x y]
                 (l/== q {:x x :y y})
                 (zip+o x y [1 1])))

;=> ({:x (1 0), :y (0 1)}
;    {:x (0 0), :y (1 1)})

你至少应该描述一下你的投入和预期产出。我已经澄清了我的问题。我希望如此!您能否提供一个可以直接粘贴到
lein repl
(包括
require
指令)中的示例
fresh
conde
==
run*
我相信所有这些都需要具备命名空间资格。好的,我只是简单地介绍一下你的建议。你至少应该描述一下你的投入和预期产出。我已经澄清了我的问题。我希望如此!您能否提供一个可以直接粘贴到
lein repl
(包括
require
指令)中的示例
fresh
conde
==
run*
我相信所有这些都需要具备命名空间资格。好的,我只是简单地介绍一下你的建议。