1 # Basic tests of unification
2
3 #
4 # Terminals
5 #
6
7 unify:
8 - _
9 - _
10 want:
11 _
12 ---
13 unify:
14 - _
15 - test
16 want:
17 test
18 ---
19 unify:
20 - test
21 - t?est
22 want:
23 test
24 ---
25 unify:
26 - 1
27 - 1
28 want:
29 1
30 ---
31 unify:
32 - test
33 - foo
34 want:
35 _|_
36
37 #
38 # Tuple
39 #
40
41 ---
42 unify:
43 - [a, b]
44 - [a, b]
45 want:
46 [a, b]
47 ---
48 unify:
49 - [a, _]
50 - [_, b]
51 want:
52 [a, b]
53 ---
54 unify:
55 - ["ab?c", "de?f"]
56 - [ac, def]
57 want:
58 [ac, def]
59
60 #
61 # Repeats
62 #
63
64 ---
65 unify:
66 - !repeat [a]
67 - [_]
68 want:
69 [a]
70 ---
71 unify:
72 - !repeat [a]
73 - [_, _]
74 want:
75 [a, a]
76 ---
77 unify:
78 - !repeat [a]
79 - [b]
80 want:
81 _|_
82 ---
83 unify:
84 - !repeat [xy*]
85 - [x, xy, xyy]
86 want:
87 [x, xy, xyy]
88 ---
89 unify:
90 - !repeat [xy*]
91 - !repeat ["xz?y*"]
92 - [x, xy, xyy]
93 want:
94 [x, xy, xyy]
95 ---
96 unify:
97 - !repeat [!sum [a, b]]
98 - [a, b, a]
99 all:
100 - [a, b, a]
101 ---
102 unify:
103 - !repeat [!sum [a, b]]
104 - !repeat [!sum [b, c]]
105 - [b, b, b]
106 all:
107 - [b, b, b]
108 ---
109 unify:
110 - !repeat [!sum [a, b]]
111 - !repeat [!sum [b, c]]
112 - [a]
113 all: []
114
115 #
116 # Def
117 #
118
119 ---
120 unify:
121 - {a: a, b: b}
122 - {a: a, b: b}
123 want:
124 {a: a, b: b}
125 ---
126 unify:
127 - {a: a}
128 - {b: b}
129 want:
130 {a: a, b: b}
131
132 #
133 # Sum
134 #
135
136 ---
137 unify:
138 - !sum [1, 2]
139 - !sum [2, 3]
140 all:
141 - 2
142 ---
143 unify:
144 - !sum [{label: a, value: abc}, {label: b, value: def}]
145 - !sum [{value: "ab?c", extra: d}, {value: "def?", extra: g}]
146 all:
147 - {extra: d, label: a, value: abc}
148 - {extra: g, label: b, value: def}
149 ---
150 # A sum of repeats must deal with different dynamically-created variables in
151 # each branch.
152 unify:
153 - !sum [!repeat [a], !repeat [b]]
154 - [a, a, a]
155 all:
156 - [a, a, a]
157 ---
158 unify:
159 - !sum [!repeat [a], !repeat [b]]
160 - [a, a, b]
161 all: []
162 ---
163 # Exercise sumEnvs with more than one result
164 unify:
165 - !sum
166 - [a|b, c|d]
167 - [e, g]
168 - [!sum [a, b, e, f], !sum [c, d, g, h]]
169 all:
170 - [a, c]
171 - [a, d]
172 - [b, c]
173 - [b, d]
174 - [e, g]
175
View as plain text