我想使用Clojure的Core.logic.但是,我想了解它是如何工作的.在某处有简明的解释吗?(就像实施一个元外评估者?)
谢谢!
scheme clojure logic-programming minikanren clojure-core.logic
这不是作业 - 解决方案已在文中.我只是无法理解解决方案.
(run* (q)
(let [a (== true q)
b (== false q)]
b))
Run Code Online (Sandbox Code Playgroud)
(false)
Run Code Online (Sandbox Code Playgroud)
()
Run Code Online (Sandbox Code Playgroud)
显然,"a(== true q)"行未被执行,因为只有b是目标.这让我很困惑.到目前为止,我对逻辑编程的心理模型是:
输出管理通过整个程序的那些
因此,"a(== true q)"迫使q = true,这使得不可能满足"b(== false q)"线.
然而,显然只执行"计算目标所需的数量".这是怎么回事?core.logic/mini-kanren的正确心理执行模式是什么?
谢谢
(顺便说一句,我显然是错的,因为mini-karen + core.logic互相攻击 - 我只想了解我做错了什么.)