aboutsummaryrefslogtreecommitdiffstats
path: root/stdlib/maybe.milch
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2022-12-06 17:37:43 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2022-12-06 17:37:43 +0200
commite529e0e48c999fccb216bd3f3bc948abe22dbe76 (patch)
tree18449b06ef564a2ec6a03dd53a4209b61bbd16e0 /stdlib/maybe.milch
parente73ad00f44479e3065ccf12d07ca3ae22ca1f3f0 (diff)
Clean up examples, stdlib
Diffstat (limited to 'stdlib/maybe.milch')
-rw-r--r--stdlib/maybe.milch41
1 files changed, 17 insertions, 24 deletions
diff --git a/stdlib/maybe.milch b/stdlib/maybe.milch
index 4114e22..ef9e906 100644
--- a/stdlib/maybe.milch
+++ b/stdlib/maybe.milch
@@ -1,33 +1,20 @@
; LIB
-(let Maybe/just (\[a]
- ["Maybe" "just" a]))
-(let Maybe/nothing (\[]
- ["Maybe" "nothing"]))
+(record Maybe/Just value)
+(record Maybe/Nothing)
-(let Maybe/#at (\[n seq]
- (match seq
- []
- (fatal! "Maybe/#at out of bounds")
- otherwise
- (match n
- 0
- (head seq)
- otherwise
- (Maybe/#at (- n 1) (tail seq))))))
-
-(let Maybe/unpack (Maybe/#at 2))
-(let Maybe/kind (Maybe/#at 1))
+(let Maybe/just Maybe/Just/create)
+(let Maybe/nothing Maybe/Nothing/create)
(let Maybe/map (\[f m]
- (match (Maybe/kind m)
- "just" (Maybe/just (f (Maybe/unpack m)))
- "nothing" (Maybe/nothing))))
+ (match (kind m)
+ "Maybe/Just" (Maybe/just (f (Maybe/Just/get-value m)))
+ "Maybe/Nothing" (Maybe/nothing))))
(let Maybe/and-then (\[f m]
- (match (Maybe/kind m)
- "just" (f (Maybe/unpack m))
- "nothing" (Maybe/nothing))))
+ (match (kind m)
+ "Maybe/Just" (f (Maybe/Just/get-value m))
+ "Maybe/Nothing" (Maybe/nothing))))
; TESTING
@@ -46,6 +33,12 @@
;; (let m (Maybe/just 10))
;; (match m
;; (Maybe/just _)
-;; (print-line! (fmt "found just {0}!" [(Maybe/unpack m)]))
+;; (print-line! (fmt "found just {0}!" [(Maybe/Just/get-value m)]))
;; (Maybe/nothing)
;; (print-line! "found nothing!"))
+
+;; (let m (Maybe/just 10))
+;; (pipe m [
+;; (Maybe/map (+ 5))
+;; (Maybe/and-then (\[val] (Maybe/just (- val 3))))
+;; ])