aboutsummaryrefslogtreecommitdiff
path: root/stdlib.slip
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-22 22:47:12 +0300
committerJoel Kronqvist <joel.kronqvist@iki.fi>2025-08-22 22:47:12 +0300
commit8ebcae0f85358e7a34fdaded3df796e0e52b021d (patch)
tree1ad8ad8f2d34ef6a5b1a8a9a4430312f28f79a92 /stdlib.slip
parentdf65d1ec5b2c5a338b121c575b0dac321d15b299 (diff)
downloadmyslip-8ebcae0f85358e7a34fdaded3df796e0e52b021d.tar.gz
myslip-8ebcae0f85358e7a34fdaded3df796e0e52b021d.zip
feat: added discard: T -> () to stdlib.slip
Diffstat (limited to 'stdlib.slip')
-rw-r--r--stdlib.slip79
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))
+ )
+ )
+ )
))