@@ -8,16 +8,16 @@
88
99++ head |= p=[A B]
1010 ?- p
11− [a b] a
11+ [a b] a
1212
1313++ tail |= p=[A B]
1414 ?- p
15− [a b] b
15+ [a b] b
1616
1717++ not |= b=?
1818 ?- b
19− %.y %.n
20− %.n %.y
19+ %.y %.n
20+ %.n %.y
2121
2222++ eq |= args=[A A] (eq-data.internal args)
2323
@@ -31,31 +31,29 @@
3131
3232++ fall |= args=[(unit A) A]
3333 ?- args
34− [maybe fallback]
35− ?- maybe
36− ~ fallback
37− [~ value] value
34+ [maybe fallback]
35+ ?- maybe
36+ ~ fallback
37+ [~ value] value
3838
3939++ need |= maybe=(unit A)
4040 ?- maybe
41− ~ !!
42− [~ value] value
41+ ~ !!
42+ [~ value] value
4343
4444++ weld |= args=[(list A) (list A)]
4545 ?- args
46− [xs ys]
47− ^- (list A)
48− ?- xs
49− ~ ys
50− [item rest] [item (weld rest ys)]
46+ [xs ys] ^- (list A)
47+ ?- xs
48+ ~ ys
49+ [item rest] [item (weld rest ys)]
5150
5251++ turn |= args=[(list A) $-(A B)]
5352 ?- args
54− [xs f]
55− ^- (list B)
56− ?- xs
57− ~ ~
58− [item rest] [(f item) (turn rest f)]
53+ [xs f] ^- (list B)
54+ ?- xs
55+ ~ ~
56+ [item rest] [(f item) (turn rest f)]
5957
6058+$ dime [p=@ta q=@]
6159
@@ -104,17 +102,16 @@
104102+$ like |$ [A] [p=hair q=(unit [p=A q=nail])]
105103
106104++ like |= [f=$-(A B) result=(like A)]
107− ++ mapped
108− ^- (unit [p=B q=nail])
109− ?- q.result
110− ~ ~
111− [~ value] `[p=(f p.value) q=q.value]
105+ ++ mapped ^- (unit [p=B q=nail])
106+ ?- q.result
107+ ~ ~
108+ [~ value] `[p=(f p.value) q=q.value]
112109 ^- (like B) [p=p.result q=mapped]
113110
114111++ wonk |= veq=(like A)
115112 ?- q.veq
116− ~ !!
117− [~ product] p.product
113+ ~ !!
114+ [~ product] p.product
118115
119116+$ lone |$ [A] [p=A]
120117
@@ -143,214 +140,209 @@
143140
144141++ snoc |= args=[(list A) A]
145142 ?- args
146− [xs item] (weld xs [item ~])
143+ [xs item] (weld xs [item ~])
147144
148145++ flop |= xs=(list A)
149146 ++ reverse-into |= args=[(list A) (list A)]
150147 ?- args
151− [rest acc]
152− ?- rest
153− ~ acc
154− [item more] (reverse-into more [item acc])
148+ [rest acc]
149+ ?- rest
150+ ~ acc
151+ [item more] (reverse-into more [item acc])
155152 (reverse-into xs ~)
156153
157−++ drop |= maybe=(unit A)
158− ^- (list A)
159− ?- maybe
160− ~ ~
161− [~ value] [value ~]
154+++ drop |= maybe=(unit A) ^- (list A)
155+ ?- maybe
156+ ~ ~
157+ [~ value] [value ~]
162158
163159++ bond |= fallback=$-(~ A)
164160 |= maybe=(unit A)
165161 ?- maybe
166− ~ (fallback ~)
167− [~ value] value
162+ ~ (fallback ~)
163+ [~ value] value
168164
169165++ bind |= args=[(unit A) $-(A B)]
170166 ?- args
171− [maybe f] ^- (unit B)
172− ?- maybe
173− ~ ~
174− [~ value] `(f value)
167+ [maybe f] ^- (unit B)
168+ ?- maybe
169+ ~ ~
170+ [~ value] `(f value)
175171
176172++ biff |= args=[(unit A) $-(A (unit B))]
177173 ?- args
178− [maybe f] ^- (unit B)
179− ?- maybe
180− ~ ~
181− [~ value] (f value)
174+ [maybe f] ^- (unit B)
175+ ?- maybe
176+ ~ ~
177+ [~ value] (f value)
182178
183179++ both |= args=[(unit A) (unit B)]
184180 ?- args
185− [first second] ^- (unit [A B])
186− ?- first
187− ~ ~
188− [~ a]
189− ?- second
190− ~ ~
191− [~ b] `[a b]
181+ [first second] ^- (unit [A B])
182+ ?- first
183+ ~ ~
184+ [~ a]
185+ ?- second
186+ ~ ~
187+ [~ b] `[a b]
192188
193189++ clap |= args=[(unit A) (unit A) $-([A A] A)]
194190 ?- args
195− [first second combine] ^- (unit A)
196− ?- first
197− ~ second
198− [~ a]
199− ?- second
200− ~ first
201− [~ b] `(combine a b)
191+ [first second combine] ^- (unit A)
192+ ?- first
193+ ~ second
194+ [~ a]
195+ ?- second
196+ ~ first
197+ [~ b] `(combine a b)
202198
203199++ hunt |= args=[$-([A A] ?) (unit A) (unit A)]
204200 ?- args
205− [choose first second] ^- (unit A)
206− ?- first
207− ~ second
208− [~ a]
209− ?- second
210− ~ first
211− [~ b]
212− ?- (choose a b)
213− %.y first
214− %.n second
201+ [choose first second] ^- (unit A)
202+ ?- first
203+ ~ second
204+ [~ a]
205+ ?- second
206+ ~ first
207+ [~ b]
208+ ?- (choose a b)
209+ %.y first
210+ %.n second
215211
216212++ mate |= args=[(unit A) (unit A)]
217213 ?- args
218− [first second] ^- (unit A)
219− ?- second
220− ~ first
221− [~ b]
222− ?- first
223− ~ second
224− [~ a]
225− ?- (eq a b)
226− %.y first
227− %.n !!
214+ [first second] ^- (unit A)
215+ ?- second
216+ ~ first
217+ [~ b]
218+ ?- first
219+ ~ second
220+ [~ a]
221+ ?- (eq a b)
222+ %.y first
223+ %.n !!
228224
229225++ clef |= args=[(unit A) (unit B) $-([A B] (unit C))]
230226 ?- args
231− [first second combine] ^- (unit C)
232− ?- first
233− ~ ~
234− [~ a]
235− ?- second
236− ~ ~
237− [~ b] (combine a b)
227+ [first second combine] ^- (unit C)
228+ ?- first
229+ ~ ~
230+ [~ a]
231+ ?- second
232+ ~ ~
233+ [~ b] (combine a b)
238234
239235++ skim |= args=[(list A) $-(A ?)]
240236 ?- args
241− [xs predicate] ^- (list A)
242− ?- xs
243− ~ ~
244− [item rest]
245− ?- (predicate item)
246− %.y [item (skim rest predicate)]
247− %.n (skim rest predicate)
237+ [xs predicate] ^- (list A)
238+ ?- xs
239+ ~ ~
240+ [item rest]
241+ ?- (predicate item)
242+ %.y [item (skim rest predicate)]
243+ %.n (skim rest predicate)
248244
249245++ skip |= args=[(list A) $-(A ?)]
250246 ?- args
251− [xs predicate] ^- (list A)
252− ?- xs
253− ~ ~
254− [item rest]
255− ?- (predicate item)
256− %.y (skip rest predicate)
257− %.n [item (skip rest predicate)]
258−
259−++ levy |= args=[(list A) $-(A ?)]
260− ^- ?
261− ?- args
262− [xs predicate]
263− ?- xs
264− ~ %.y
265− [item rest]
266− ?- (predicate item)
267− %.y (levy rest predicate)
268− %.n %.n
269−
270−++ lien |= args=[(list A) $-(A ?)]
271− ^- ?
272− ?- args
273− [xs predicate]
274− ?- xs
275− ~ %.n
276− [item rest]
277− ?- (predicate item)
278− %.y %.y
279− %.n (lien rest predicate)
247+ [xs predicate] ^- (list A)
248+ ?- xs
249+ ~ ~
250+ [item rest]
251+ ?- (predicate item)
252+ %.y (skip rest predicate)
253+ %.n [item (skip rest predicate)]
254+
255+++ levy |= args=[(list A) $-(A ?)] ^- ?
256+ ?- args
257+ [xs predicate]
258+ ?- xs
259+ ~ %.y
260+ [item rest]
261+ ?- (predicate item)
262+ %.y (levy rest predicate)
263+ %.n %.n
264+
265+++ lien |= args=[(list A) $-(A ?)] ^- ?
266+ ?- args
267+ [xs predicate]
268+ ?- xs
269+ ~ %.n
270+ [item rest]
271+ ?- (predicate item)
272+ %.y %.y
273+ %.n (lien rest predicate)
280274
281275++ roll |= args=[(list A) B $-([A B] B)]
282276 ?- args
283− [xs start combine]
284− ?- xs
285− ~ start
286− [item rest] (roll rest (combine item start) combine)
277+ [xs start combine]
278+ ?- xs
279+ ~ start
280+ [item rest] (roll rest (combine item start) combine)
287281
288282++ reel |= args=[(list A) B $-([A B] B)]
289283 ?- args
290− [xs start combine]
291− ?- xs
292− ~ start
293− [item rest] (combine item (reel rest start combine))
284+ [xs start combine]
285+ ?- xs
286+ ~ start
287+ [item rest] (combine item (reel rest start combine))
294288
295289++ flit |= predicate=$-(A ?)
296− |= value=A
297− ^- (unit A)
298− ?- (predicate value)
299− %.y `value
300− %.n ~
290+ |= value=A ^- (unit A)
291+ ?- (predicate value)
292+ %.y `value
293+ %.n ~
301294
302295++ murn |= args=[(list A) $-(A (unit B))]
303296 ?- args
304− [xs f] ^- (list B)
305− ?- xs
306− ~ ~
307− [item rest]
308− ?- (f item)
309− ~ (murn rest f)
310− [~ value] [value (murn rest f)]
297+ [xs f] ^- (list B)
298+ ?- xs
299+ ~ ~
300+ [item rest]
301+ ?- (f item)
302+ ~ (murn rest f)
303+ [~ value] [value (murn rest f)]
311304
312305++ join |= args=[A (list A)]
313306 ?- args
314− [separator xs] ^- (list A)
315− ?- xs
316− ~ ~
317− [item rest]
318− ?- rest
319− ~ [item ~]
320− [next more] [item [separator (join separator rest)]]
321−
322−++ snip |= xs=(list A)
323− ^- (list A)
307+ [separator xs] ^- (list A)
324308 ?- xs
325− ~ ~
326− [item rest]
327− ?- rest
328− ~ ~
329− [next more] [item (snip rest)]
309+ ~ ~
310+ [item rest]
311+ ?- rest
312+ ~ [item ~]
313+ [next more] [item [separator (join separator rest)]]
314+
315+++ snip |= xs=(list A) ^- (list A)
316+ ?- xs
317+ ~ ~
318+ [item rest]
319+ ?- rest
320+ ~ ~
321+ [next more] [item (snip rest)]
330322
331323++ rear |= xs=(list A)
332324 ?- xs
333− ~ !!
334− [item rest]
335− ?- rest
336− ~ item
337− [next more] (rear rest)
325+ ~ !!
326+ [item rest]
327+ ?- rest
328+ ~ item
329+ [next more] (rear rest)
338330
339331++ cork |= gates=[$-(A B) $-(B C)]
340332 ?- gates
341− [f g] |= x=A (g (f x))
333+ [f g] |= x=A (g (f x))
342334
343335++ corl |= gates=[$-(B C) $-(A B)]
344336 ?- gates
345− [f g] |= x=A (f (g x))
337+ [f g] |= x=A (f (g x))
346338
347339++ cury |= args=[$-([A B] C) A]
348340 ?- args
349− [f a] |= b=B (f a b)
341+ [f a] |= b=B (f a b)
350342
351343++ curr |= args=[$-([A B] C) B]
352344 ?- args
353− [f b] |= a=A (f a b)
345+ [f b] |= a=A (f a b)
354346
355347+$ cmd |$ [M]
356348 [%poke p=raw-poke reply=$-((unit @t) M)]
@@ -373,29 +365,27 @@
373365 [%url reply=$-(path M)]
374366
375367:: Count a finite list with the source-backed addition gate.
376−++ lent |= xs=(list A)
377− ^- @ud
378− ?- xs
379− ~ 0
380− [item rest] (add 1 (lent rest))
368+++ lent |= xs=(list A) ^- @ud
369+ ?- xs
370+ ~ 0
371+ [item rest] (add 1 (lent rest))
381372
382373++ lth |= args=[A A]
383374 ?- args
384− [x y] (gth y x)
375+ [x y] (gth y x)
385376
386377++ gte |= args=[A A]
387378 ?- args
388− [x y] (not (gth y x))
379+ [x y] (not (gth y x))
389380
390381++ lte |= args=[A A]
391382 ?- args
392− [x y] (not (gth x y))
383+ [x y] (not (gth x y))
393384
394−++ zing |= xss=(list (list A))
395− ^- (list A)
396− ?- xss
397− ~ ~
398− [xs rest] (weld xs (zing rest))
385+++ zing |= xss=(list (list A)) ^- (list A)
386+ ?- xss
387+ ~ ~
388+ [xs rest] (weld xs (zing rest))
399389
400390++ lead |= first=A |= second=B [first second]
401391++ late |= second=B |= first=A [first second]