aboutsummaryrefslogtreecommitdiff
path: root/examples.scm
diff options
context:
space:
mode:
Diffstat (limited to 'examples.scm')
-rw-r--r--examples.scm45
1 files changed, 10 insertions, 35 deletions
diff --git a/examples.scm b/examples.scm
index a2f2319..3b67f60 100644
--- a/examples.scm
+++ b/examples.scm
@@ -10,52 +10,27 @@
(data optional)
(data writer))
-(do (just x) <- (just 10)
+(do x <- (just 10)
x) ; => 10
(do let y = (just 10)
- (just x) <- y
+ x <- y
(+ x 5)) ; => 15
-(do (just x) <- (nothing)
+(do x <- (nothing)
(+ x 5)) ; => [Nothing]
-;;;
+(do x <- (just 10)
+ y <- (just 20)
+ (+ x y)) ; => 30
-(do let either = left 10
- (left x) <- either
- x) ; EVALUATION ERROR
+;;;
;; Int -> Writer Int String
(define (log-number n)
(writer n (format #f "Got nuber: ~a" n)))
-(define (mult-with-log)
- (do (writer a) <- (log-number 3)
- (writer b) <- (log-number 5)
- (* a b)))
-
-(do (writer a) <- (log-number 1)
- a) ; EVALUATION ERROR
-
-(begin { (log-number 1) >>= log-number })
-;; => [Writer 1, "Got nuber: 1, Got nuber: 1"]
-
-(do (writer a) <- (log-number 3)
- (writer b) <- (log-number 5)
+(do a <- (log-number 3)
+ b <- (log-number 5)
(writer (* a b) ""))
-;; EVALUATION ERROR
-;; => [Writer 3, "Got nuber: 3, base"]
-
-(log-number 3) ; => [Writer 3, "Got nuber: 3"]
-(just 1) ; => [Just 1]
-
-(do let y = 5
- (just x) <- (just 10)
- (just (* x y)))
-;; => [Just 50]
-
-;;; TODO
-;;; '<- and 'let can't be used after '<-
-
-
+;; => [Writer 15, "Got nuber: 3, Got nuber: 5, "]