diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-09-04 18:31:06 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-09-04 18:31:06 +0200 |
commit | dbbc248aeef1bc3b5d76268782acff43e9d71d57 (patch) | |
tree | d09e9e6e4e8138b6837cc024c69c599f58c38aa9 | |
parent | 3b6eddb2b27beacf462e9c254ebc6d612dac0129 (diff) | |
download | guix-dbbc248aeef1bc3b5d76268782acff43e9d71d57.tar.gz |
monads: Fix 'liftN' fallback case.
Reported by Andy Wingo <wingo@igalia.com>. * guix/monads.scm (define-lift) <fallback case>: Add missing #'. Remove extra formal parameter. * tests/monads.scm ("lift"): Add test with 'lift1' as a procedure.
-rw-r--r-- | guix/monads.scm | 8 | ||||
-rw-r--r-- | tests/monads.scm | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/guix/monads.scm b/guix/monads.scm index 61cd533bf4..0b0ad239de 100644 --- a/guix/monads.scm +++ b/guix/monads.scm @@ -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)) diff --git a/tests/monads.scm b/tests/monads.scm index d3ef065f24..62a07a2bc6 100644 --- a/tests/monads.scm +++ b/tests/monads.scm @@ -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)) |