Professional Documents
Culture Documents
Monads in Scheme
Monads in Scheme
Monads in Scheme
#|
(enumerate-tree ’(a (b . c) . d))
;Value: (0 (1 . 2) . 3)
|#
monad.scm Fri Feb 25 11:42:10 2011 3
#|
(enumerate-tree ’(a (b . c) . d))
;Value: (0 (1 . 2) . 3)
|#
monad.scm Fri Feb 25 11:42:10 2011 4
#|
(enumerate-tree ’(a (b . c) . d))
;Value: (0 (1 . 2) . 3)
|#
monad.scm Fri Feb 25 11:42:10 2011 5
(define (get)
(lambda (state)
(cons state state)))
(define (get)
(lambda (state)
(lambda (cont)
(cont state state))))
#|
;;; Monad laws, proved by symbolic evaluation.
;;; Monadic object above is : state -> (cont -> b)
(define f ; f : x -> M fx
(lambda (x)
(lambda (state)
(lambda (cont)
(cont (list ’f x)
(list ’fs state))))))
(define g ; g : x -> M gx
(lambda (x)
(lambda (state)
(lambda (cont)
(cont (list ’g x)
(list ’gs state))))))
monad.scm Fri Feb 25 11:42:10 2011 10