Create a gist now

Instantly share code, notes, and snippets.

A simple script to demonstrate the unfortunate importance of goal ordering in `core.logic`.
(use `clojure.core.logic)
;; Runs quickly. Prints (1 2,3).
(clojure.pprint/pprint (run* [q] (fresh [x] (== x [1,2,3])
(membero q x))))
;; Hangs
(clojure.pprint/pprint (run* [q] (fresh [x] (membero q x)
(== x [1,2,3]))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment