@@ -56,12 +56,12 @@ shiftL = \ n . n 0 I I # mind that a shiftL in LE is a divisi
56
56
57
57
dbl = \ n . n 0 (K (shiftR0 n)) (K (shiftR0 n))
58
58
59
- isStrictZero = \ n . n True (K False) (K False) # disallow padding zeroes # O(1)
60
- isZero = \ n . n True isZero (K False) # allow padding zeroes # amortised O(2), so don't worry too much
59
+ isStrictZero? = \ n . n True (K False) (K False) # disallow padding zeroes # O(1)
60
+ isZero? = \ n . n True isZero? (K False) # allow padding zeroes # amortised O(2), so don't worry too much
61
61
62
62
pad = \ n . n (shiftR0 0) (B shiftR0 pad) (B shiftR1 pad)
63
- unpad = \ n . n 0 ( \ z . ( \ unpadZ . isStrictZero unpadZ (shiftR0 unpadZ) 0 ) (unpad z) ) (B shiftR1 unpad)
64
- isPadded = \ n . n False ( \ z . z True (K (isPadded z)) (K (isPadded z)) ) isPadded
63
+ unpad = \ n . n 0 ( \ z . ( \ unpadZ . isStrictZero? unpadZ (shiftR0 unpadZ) 0 ) (unpad z) ) (B shiftR1 unpad)
64
+ isPadded? = \ n . n False ( \ z . z True (K (isPadded? z)) (K (isPadded? z)) ) isPadded?
65
65
66
66
# instance Ord
67
67
@@ -99,11 +99,11 @@ bitXor = \ m n . m n
99
99
( \ zm . n ( dbl zm) (B dbl (bitXor zm)) (B shiftR1 (bitXor zm)) )
100
100
( \ zm . n (shiftR1 zm) (B shiftR1 (bitXor zm)) (B dbl (bitXor zm)) )
101
101
102
- testBit = \ i n . isZero i
102
+ testBit = \ i n . isZero? i
103
103
(n False (testBit (pred i)) (testBit (pred i)))
104
104
(n False (K False) (K True))
105
105
106
- bit = \ i . isZero i (shiftR0 (bit (pred i))) (succ i)
106
+ bit = \ i . isZero? i (shiftR0 (bit (pred i))) (succ i)
107
107
108
108
popCount = \ n . n 0 popCount (B succ popCount)
109
109
@@ -139,7 +139,7 @@ minus = \ m n . gt m n 0 (go m n)
139
139
140
140
until = \ p fn x . p x (until p fn (fn x)) x
141
141
divMod = \ m n . until (B (lt m) snd) (bimap succ shiftR0) (Pair 0 n)
142
- \ steps nn . isZero steps
142
+ \ steps nn . isZero? steps
143
143
(divMod (minus m (shiftL nn)) n (B Pair (plus (bit (pred steps)))))
144
144
(Pair 0 m)
145
145
div = \ m n . fst (divMod m n)
@@ -160,7 +160,7 @@ gcd = \ m n . m n
160
160
(gcd (minus m n) n)
161
161
)
162
162
)
163
- lcm = \ m n . T (gcd m n) \ g . isZero g (times (div m g) n) g
163
+ lcm = \ m n . T (gcd m n) \ g . isZero? g (times (div m g) n) g
164
164
165
165
min = \ m n . le m n n m
166
166
max = \ m n . le m n m n
0 commit comments