;; lib/minikanren/tests/iterate-no.sx — iterated relation application. (define mk-nat (fn (n) (if (= n 0) :z (list :s (mk-nat (- n 1)))))) (mk-test "iterate-no-zero" (run* q (iterate-no (fn (a b) (== b (list :wrap a))) (mk-nat 0) :seed q)) (list :seed)) (mk-test "iterate-no-three-wraps" (run* q (iterate-no (fn (a b) (== b (list :wrap a))) (mk-nat 3) :x q)) (list (list :wrap (list :wrap (list :wrap :x))))) (mk-test "iterate-no-succ-three-times" (run* q (iterate-no (fn (a b) (== b (list :s a))) (mk-nat 3) :z q)) (list (mk-nat 3))) (mk-test "iterate-no-with-list-cons" (run* q (iterate-no (fn (a b) (conso :a a b)) (mk-nat 4) (list) q)) (list (list :a :a :a :a))) (mk-tests-run!)