aboutsummaryrefslogtreecommitdiff
path: root/control/monad/procedures.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-03-18 18:43:51 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-03-18 18:43:51 +0100
commite650a80856edc1d1df1f163c3f84082455717fa0 (patch)
tree4848ad975d95f5765980980d0e10ed0752e553f9 /control/monad/procedures.scm
parentAssorted comments and cleanup. (diff)
downloadscheme-monad-e650a80856edc1d1df1f163c3f84082455717fa0.tar.gz
scheme-monad-e650a80856edc1d1df1f163c3f84082455717fa0.tar.xz
Compleately redid file structure.
Diffstat (limited to '')
-rw-r--r--control/monad/procedures.scm33
1 files changed, 0 insertions, 33 deletions
diff --git a/control/monad/procedures.scm b/control/monad/procedures.scm
deleted file mode 100644
index 707dc0b..0000000
--- a/control/monad/procedures.scm
+++ /dev/null
@@ -1,33 +0,0 @@
-(define-module (control monad procedures)
- #:use-module (oop goops)
- #:use-module (srfi srfi-1) ; concatenate!
- #:export (>> >>= return))
-
-(define-generic return)
-(define-method (return (a <top>)) identity)
-(define-method (return (a <pair>)) list)
-
-(define-generic >>=)
-
-(define-method (>>= (a <top>) (proc <procedure>))
- (proc a))
-
-(define-method (>>= (this <null>) proc) '())
-(define-method (>>= (this <pair>)
- (proc <procedure>))
- (concatenate! (map proc this)))
-
-(define-generic >>)
-
-(define-method (>> (a <top>) (b <top>))
- (>>= a (lambda args b)))
-
-(define-method (>> (a <null>) (b <null>)) '())
-(define-method (>> (a <pair>) (b <null>)) '())
-(define-method (>> (a <null>) (b <pair>)) '())
-(define-method (>> (a <pair>) (b <pair>))
- (concatenate! (map (const b) a)))
-
-;; bind :: Monad m => m a -> (a -> m b) -> m b
-;; return :: Monad m => a -> m a
-;; map :: Functor f => (a -> b) -> f a -> f b