blob: 701f8719aa285ef93b563c1012403b80222aa4bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
(define-module (control monad procedures)
#:use-module (oop goops)
#:use-module (srfi srfi-1) ; concatenate!
#:export (>>=))
(define-generic >>=)
(define-method (>>= (this <null>)
proc)
'())
(define-method (>>= (this <pair>)
(proc <procedure>))
(concatenate! (map proc this)))
;; 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
|