@@ -23,14 +23,6 @@ snd = \ xy . xy \ _x y . y
2323bimap = \ fn xy . xy \ x y . Pair (fn x) (fn y)
2424Y2 = B Y (C (B bimap T))
2525
26- #import scott-triple.lc
27- Triple = \ x y z f . f x y z
28- fst3 = \ xyz . xyz \ x _y _z . x
29- snd3 = \ xyz . xyz \ _x y _z . y
30- thd3 = \ xyz . xyz \ _x _y z . z
31- trimap = \ fn xyz . xyz \ x y z . Triple (fn x) (fn y) (fn z)
32- Y3 = B Y (C (B trimap T))
33-
3426#import scott-quad.lc
3527Quad = \ w x y z f . f w x y z
3628fst4 = \ wxyz . wxyz \ w _x _y _z . w
@@ -55,24 +47,9 @@ Enum = Y2 (Pair (T \ succ pred . \ m . m 1 Bit1 (B nega-dbl pred)) # succ
5547succ = fst Enum
5648pred = snd Enum
5749
58- Num = Y3 (Triple (T \ add adc adb .
59- \ m n . m n # add
60- ( \ zm . n m ( \ zn . nega-dbl (add zm zn) ) ( \ zn . Bit1 (add zm zn) ) )
61- ( \ zm . n m ( \ zn . Bit1 (add zm zn) ) ( \ zn . nega-dbl (adb zm zn) ) )
62- )
63- (T \ add adc adb .
64- \ m n . m (succ n) # add-with-carry
65- ( \ zm . n (succ m) ( \ zn . Bit1 (add zm zn) ) ( \ zn . nega-dbl (adb zm zn) ) )
66- ( \ zm . n (succ m) ( \ zn . nega-dbl (adb zm zn) ) ( \ zn . Bit1 (adb zm zn) ) )
67- )
68- (T \ add adc adb .
69- \ m n . m (pred n) # add-with-borrow
70- ( \ zm . n (pred m) ( \ zn . Bit1 (adc zm zn) ) ( \ zn . nega-dbl (add zm zn) ) )
71- ( \ zm . n (pred m) ( \ zn . nega-dbl (add zm zn) ) ( \ zn . Bit1 (add zm zn) ) )
72- ) )
73- add = fst3 Num
74- adc = snd3 Num
75- adb = thd3 Num
50+ add = \ m n . m n
51+ ( \ zm . n m ( \ zn . nega-dbl (add zm zn) ) ( \ zn . Bit1 (add zm zn) ) )
52+ ( \ zm . n m ( \ zn . Bit1 (add zm zn) ) ( \ zn . nega-dbl (pred (add zm zn)) ) )
7653
7754negate = \ n . add n (nega-dbl n)
7855sub = \ m n . add m (negate n)
0 commit comments