From 7481b6bd5192997c87b3762dae3213b48b897ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 13 Nov 2018 00:00:06 +0100 Subject: Move examples.scm to directory. --- examples.scm | 41 ----------------------------------------- examples/do.scm | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 41 deletions(-) delete mode 100644 examples.scm create mode 100644 examples/do.scm diff --git a/examples.scm b/examples.scm deleted file mode 100644 index 7eed583..0000000 --- a/examples.scm +++ /dev/null @@ -1,41 +0,0 @@ -(add-to-load-path (dirname (current-filename))) - -(use-modules (control monad) - (data monoid) - (data optional) - (data writer)) - -;;; Optional Monad, and do notation - -(do x <- (just 10) - x) ; => 10 - -(do let y = (just 10) - x <- y - (+ x 5)) ; => 15 - -(do x <- (nothing) - (+ x 5)) ; => [Nothing] - -(do x <- (just 10) - y <- (just 20) - (+ x y)) ; => 30 - -(do (just 10) - (nothing) - (just 20)) ; => [Nothing] - -;;; Writer Monad, and do notation - -;; Int -> Writer Int String -(define (log-number n) - (writer n (format #f "Got nuber: ~a" n))) - -(do a <- (log-number 3) - b <- (log-number 5) - (writer (* a b) "")) -;; => [Writer 15, "Got nuber: 3, Got nuber: 5, "] - -(do (log-number 3) - (log-number 5)) -;; => [Writer 5, "Got nuber: 3Got nuber: 5"] diff --git a/examples/do.scm b/examples/do.scm new file mode 100644 index 0000000..d758177 --- /dev/null +++ b/examples/do.scm @@ -0,0 +1,41 @@ +(add-to-load-path (dirname (current-filename))) + +(use-modules (control monad) + (data monoid) + (data optional) + (data writer)) + +;;; Optional Monad, and do notation + +(do x <- (just 10) + x) ; => 10 + +(do let y = (just 10) + x <- y + (+ x 5)) ; => 15 + +(do x <- (nothing) + (+ x 5)) ; => [Nothing] + +(do x <- (just 10) + y <- (just 20) + (+ x y)) ; => 30 + +(do (just 10) + (nothing) + (just 20)) ; => [Nothing] + +;;; Writer Monad, and do notation + +;; Int -> Writer Int String +(define (log-number n) + (writer n (format #f "Got nuber: ~a" n))) + +(do a <- (log-number 3) + b <- (log-number 5) + (writer (* a b) "")) +;; => [Writer 15, "Got nuber: 3Got nuber: 5"] + +(do (log-number 3) + (log-number 5)) +;; => [Writer 5, "Got nuber: 3Got nuber: 5"] -- cgit v1.2.3