我正在尝试理解core.logic
并遇到一堆稀疏文档和过时的教程。
如果我能在lib上取得不错的进展,我想记录一些事情并帮助社区,但到目前为止,这是艰难的...
我目前的问题基本上是“fizzbuzz”,因为我正在努力学习反对做项目欧拉问题的方法。
这个谜题的一个简单部分就是在50的范围内获得3的所有倍数,但以下内容会引发错误:
(run* [q]
(membero q (range 50))
(conde
[(== (mod q 3) 0)]))
=> clojure.core.logic.LVar cannot be cast to java.lang.Number
有什么想法?此外,任何提及更多core.logic
的参考? core.logic
仍然是“一件事”,还是停滞不前,因为git repo会建议?
答案 0 :(得分:1)
@Andre的评论为我解决了这个问题: https://github.com/clojure/core.logic/blob/f3f2b4c6c4a906c1fa512720aa09cb1abe312cd1/src/test/clojure/clojure/core/logic/tests.clj#L1242
(defnc dev3c [x]
(zero? (mod x 3)))
(run* [x]
(membero x (range 50))
(dev3c x))