diff options
author | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-22 22:47:12 +0300 |
---|---|---|
committer | Joel Kronqvist <joel.kronqvist@iki.fi> | 2025-08-22 22:47:12 +0300 |
commit | 8ebcae0f85358e7a34fdaded3df796e0e52b021d (patch) | |
tree | 1ad8ad8f2d34ef6a5b1a8a9a4430312f28f79a92 /stdlib.slip | |
parent | df65d1ec5b2c5a338b121c575b0dac321d15b299 (diff) | |
download | myslip-8ebcae0f85358e7a34fdaded3df796e0e52b021d.tar.gz myslip-8ebcae0f85358e7a34fdaded3df796e0e52b021d.zip |
feat: added discard: T -> () to stdlib.slip
Diffstat (limited to 'stdlib.slip')
-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)) + ) + ) + ) )) |