(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]))))