M guix/monads.scm => guix/monads.scm +4 -4
@@ 239,10 239,10 @@ CONDITION is true, return *unspecified* in the current monad."
(identifier? #'id)
;; Slow path: Return a closure-returning procedure (we don't
;; guarantee (eq? LIFTN LIFTN), but that's fine.)
- (lambda (liftn proc monad)
- (lambda (args ...)
- (with-monad monad
- (return (proc args ...))))))))))))
+ #'(lambda (proc monad)
+ (lambda (args ...)
+ (with-monad monad
+ (return (proc args ...))))))))))))
(define-lift lift0 ())
(define-lift lift1 (a))
M tests/monads.scm => tests/monads.scm +3 -1
@@ 95,10 95,12 @@
(test-assert "lift"
(every (lambda (monad run)
- (let ((f (lift1 1+ monad)))
+ (let ((f (lift1 1+ monad))
+ (g (apply lift1 1+ (list monad))))
(with-monad monad
(let ((number (random 777)))
(= (run (>>= (return number) f))
+ (run (>>= (return number) g))
(1+ number))))))
%monads
%monad-run))