aboutsummaryrefslogtreecommitdiff
path: root/control/monad.scm
diff options
context:
space:
mode:
Diffstat (limited to 'control/monad.scm')
-rw-r--r--control/monad.scm32
1 files changed, 4 insertions, 28 deletions
diff --git a/control/monad.scm b/control/monad.scm
index e5dc89d..8bc46bf 100644
--- a/control/monad.scm
+++ b/control/monad.scm
@@ -1,39 +1,15 @@
(define-module (control monad)
#:use-module (control monad procedures)
- ;; #:use-module (control monad syntax)
- #:export (do <-)
- ;; #:re-export (>>= do <-)
- )
+ #:export (do)
+ #:re-export (>>=))
(define-syntax do
(syntax-rules (<- let =)
((_ let var = val rest ...)
(let ((var val)) (do rest ...)))
- ((_ ptrn <- val rest ...)
- (<- ptrn val rest ...))
+ ((_ var <- val rest ...)
+ (>>= val (lambda (var) (do rest ...))))
((_ a) a)
((_ token rest ...)
(begin token (do rest ...)))))
-(define-syntax <-
- (syntax-rules (just writer)
- ((_ (just var) val rest ...)
- (>>= val (lambda (var) rest ...)))
- ((_ (writer var) val rest ...)
- (>>= val (lambda (var) rest ...))))
-
-
- #;
- (lambda (x)
- (syntax-case x (just writer)
- ((_ (just var) val rest ...)
- #'(>>= val (lambda (var) rest ...)))
- ((_ (writer var) val rest ...)
- #'(>>= val (lambda (var) rest ...)))
- #;
- ((_ (left var) val rest ...) ;
- #'(>>= val (lambda (var) rest ...)))
- #;
- ((_ (right var) val rest ...) ;
- #'(>>= val (lambda (var) rest ...))))))
-