나는 [1 4] [1 5]
왜 core.logic의 출력이 같은 값을 반복합니까?
로 결과를 기대 core.logic
(require [clojure.core.logic :as l]) (l/run* [q] (l/fresh [a b c] (l/membero a [1]) (l/membero b [4 5]) (l/membero c [1 2]) (l/== q [a b])))
이 시도하지만
[1 4] [1 4] [1 5] [1 5]
다음 나는 그것으로 연주하기 시작했고이 발견
(require [clojure.core.logic :as l]) (l/run* [q] (l/fresh [a b c] (l/membero a [1]) (l/membero b [4 5]) (l/membero c [1 1 1 1 1 1 1 1]) (l/== q [a b])))을
;; => ([1 4] [1 4] [1 4] [1 5] [1 4] [1 4] [1 5] [1 4] [1 5] [1 4] [1 5] [1 5] [1 5] [1 5])
[1 5]
이 산재되어 있습니다. [1 4]
무슨 일이 일어나고 있습니까? 이 반복 기능이 기능 또는 버그라고 생각합니까?
이 답변은 정확합니다. c는 더 많은 가능성을 제공하지만, 우리는 가치가 있다는 것을 알려주지 않으므로 반복되는 결과를 얻는 것처럼 보입니다. – dnolen