blob: 8bc46bf929de23431928450bfd52088b60a2cbc4 (
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 ...)
(begin token (do rest ...)))))
|