3 (:refer-clojure :exclude [==])
4 (:use [clojure.core.logic :exclude [is] :as l])
7 (deftest test-tio-forward
12 (tio '() '(fn [x] x) t))
15 (tio '() '((fn [x] x) (fn [x] x)) t))
18 (tio '() '(fn [f] (fn [x] (f x))) t))
19 '([:=> [:=> _0 _1] [:=> _0 _1]]))))
21 (deftest test-tio-backwards
23 (tio '() e [:=> 'a 'a]))
24 '(((fn [_0] _0) :- (sym _0))
25 ((fn [_0] ((fn [_1] _1) _0)) :- (sym _0) (sym _1))
26 (((fn [_0] _0) (fn [_1] _1)) :- (sym _0) (sym _1)))))
29 (tio '() e [:=> a a])))
30 '(((fn [_0] _0) :- (sym _0))
31 ((fn [_0] (fn [_1] _1)) :- (sym _1))
32 (((fn [_0] _0) (fn [_1] _1)) :- (sym _0) (sym _1))))))
34 (deftest test-tio-generate
39 '(([(fn [_0] _0) [:=> _1 _1]] :- (sym _0))
40 ([(fn [_0] (fn [_1] _1)) [:=> _2 [:=> _3 _3]]] :- (sym _1))
41 ([(fn [_0] (fn [_1] _0)) [:=> _2 [:=> _3 _2]]] :- (sym _0) (!= (_0 _1)))
42 ([((fn [_0] _0) (fn [_1] _1)) [:=> _2 _2]] :- (sym _0) (sym _1))
43 ([(fn [_0] (fn [_1] (fn [_2] _2))) [:=> _3 [:=> _4 [:=> _5 _5]]]] :- (sym _2))
44 ([(fn [_0] (fn [_1] (fn [_2] _1))) [:=> _3 [:=> _4 [:=> _5 _4]]]] :- (sym _1) (!= (_1 _2)))
45 ([(fn [_0] (_0 (fn [_1] _1))) [:=> [:=> [:=> _2 _2] _3] _3]] :- (sym _0) (sym _1))
46 ([((fn [_0] _0) (fn [_1] (fn [_2] _2))) [:=> _3 [:=> _4 _4]]] :- (sym _0) (sym _2))
47 ([(fn [_0] (fn [_1] (fn [_2] _0))) [:=> _3 [:=> _4 [:=> _5 _3]]]] :- (sym _0) (!= (_0 _2)) (!= (_0 _1)))
48 ([(fn [_0] ((fn [_1] _1) _0)) [:=> _2 _2]] :- (sym _0) (sym _1))))))
50 (deftest test-env-lookupo
52 (env-lookupo '([x 1]) 'x q))
55 (env-lookupo '() 'x q))
59 (env-lookupo `([~a 1] [~b 2]) 'x q)))
63 (env-lookupo `([~a 1] [~'x 2] [~b 3]) 'x q)))