मैं core.logiccore.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 5]
होने के लिए, लेकिन यह [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]
के साथ छेड़छाड़ की गई है? क्या यह पुनरावृत्ति चीज एक फीचर या बग माना जाता है?
में किया गया है यह उत्तर सही है। सी अधिक संभावनाओं का योगदान करता है, लेकिन हम इसका मूल्य पुनः नहीं कर रहे हैं, इसलिए ऐसा लगता है कि हमें बार-बार परिणाम मिल रहा है। – dnolen