diff options
-rw-r--r-- | stdlib.slip | 79 |
1 files changed, 44 insertions, 35 deletions
diff --git a/stdlib.slip b/stdlib.slip index 593dc14..f3c1d47 100644 --- a/stdlib.slip +++ b/stdlib.slip @@ -1,58 +1,67 @@ + +(let discard + (fn a T Nil ()) +) + (let if - (fn (cond iftrue iffalse) (Bool T T) T - (case cond - (true iftrue) - (_ iffalse)) - ) + (fn (cond iftrue iffalse) (Bool T T) T + (case cond + (true iftrue) + (_ iffalse)) + ) ) (let ++ - (fn x Int Int - (+ x 1) - ) + (fn x Int Int + (+ x 1) + ) ) (let -- - (fn x Int Int - (- x 1) - ) + (fn x Int Int + (- x 1) + ) ) (let sum (fix - (fn sum' ((Vector (Int ...)) -> Int) - ((Vector (Int ...)) -> Int) - (fn vec (Vector (Int ...)) Int - (case vec - ((h ..t) (+ h (sum' t))) - (_ 0)) - ) - ) + (fn sum' ((Vector (Int ...)) -> Int) + ((Vector (Int ...)) -> Int) + (fn vec (Vector (Int ...)) Int + (case vec + ((h ..t) (+ h (sum' t))) + (_ 0)) + ) + ) )) (let map-i->i (fix - (fn map' (((Vector (Int ...)) (Int -> Int)) -> (Vector (Int ...))) - (((Vector (Int ...)) (Int -> Int)) -> (Vector (Int ...))) - (fn (vec fun) ((Vector (Int ...)) (Int -> Int)) (Vector (Int ...)) - (case vec - ((h ..t) (<> (vector (fun h)) (map' t fun))) - (_ (() Int))) - ) - ) + (fn map' (((Vector (Int ...)) (Int -> Int)) -> (Vector (Int ...))) + (((Vector (Int ...)) (Int -> Int)) -> (Vector (Int ...))) + (fn (vec fun) ((Vector (Int ...)) (Int -> Int)) (Vector (Int ...)) + (case vec + ((h ..t) (<> (vector (fun h)) (map' t fun))) + (_ (() Int))) + ) + ) )) (let filter-int (fix - (fn filter' (((Vector (Int ...)) (Int -> Bool)) -> (Vector (Int ...))) - (((Vector (Int ...)) (Int -> Bool)) -> (Vector (Int ...))) - (fn (vec pred) ((Vector (Int ...)) (Int -> Bool)) (Vector (Int ...)) - (case vec - ((h ..t) (if (pred h) (<> (vector h) (filter' t pred)) (filter' t pred))) - (_ (() Int)) - ) - ) + (fn filter' (((Vector (Int ...)) (Int -> Bool)) -> (Vector (Int ...))) + (((Vector (Int ...)) (Int -> Bool)) -> (Vector (Int ...))) + (fn (vec pred) ((Vector (Int ...)) (Int -> Bool)) (Vector (Int ...)) + (case vec + ((h ..t) ( + if (pred h) + (<> (vector h) (filter' t pred)) + (filter' t pred)) ) + (_ (() Int)) + ) + ) + ) )) |