나는 The Reasoned Schemer (TRS)을 사용하여 Clojure.logic을 사용하고 differences documented here에주의를 기울였다. 내가 TRS는Clojure.logic Reasoned Schemer와의 차이점
(run 5 [x]
(lolo '((a b) (c d) . x)))
지금
'(()
(())
(()())
(()()())
(()()()())
을 생산해야한다고보고 제 3의 프레임 (24)에 도달, 나는
다음과 같은 이상한 결과를(defn lolo
"Succeeds if l is a list-of-lists."
[l]
(conde
((emptyo l) s#)
((fresh [a]
(firsto l a)
(listo a)) (fresh [d]
(resto l d)
(lolo d)))
(s# u#)))
로`롤로을 구현 :
'(()
(())
((_0))
(()())
((_0 _1)))
은 기본적으로 내 lolo가 신선한 변수를 유출하는 솔루션을 생산한다는 것을 의미합니다. 나는 계속되면, 패턴을 보려고, 나는
'(()
(())
((_0))
(()())
((_0 _1))
(() (_0)
((_0)())
(()()())
((_0 _1 _2)))
를 얻을 수 있지만 매우 안개 속을 충분히 명확하게 볼 수 없으며,이에 창고 모든 빛을 감사하겠습니다. 내 lolo의 버그 야? clojure.logic의 버그입니까? TRS의 솔버와 clojure.logic의 솔버 사이에 적당한 차이가 있습니까? 결과를 해석하거나 사용하려면 어떻게해야합니까? clojure.logic의 결과를 어떻게 예측할 수 있습니까?