blob: f51289d42fe3bf7a1234d84c62424d47adb97ec0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
(define-module (control monad)
#:use-module (control monad procedures)
#:export (do)
#:re-export (>> >>=))
(define-syntax do
(syntax-rules (<- let =)
((_ let var = val rest ...)
(let ((var val)) (do rest ...)))
((_ var <- val rest ...)
(>>= val (lambda (var) (do rest ...))))
((_ a) a)
((_ token rest ...)
(>> token (do rest ...)))))
|