summaryrefslogtreecommitdiff
path: root/guix/monads.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-12-09 21:10:28 +0100
committerLudovic Courtès <ludo@gnu.org>2013-12-10 00:24:01 +0100
commit593c3fe600a5f5e90a6eea3a175f83d3319b4efe (patch)
tree616bf04c694dd5dc540341fa11f1aac9c00952c2 /guix/monads.scm
parentf7faff88b73c53fd1a8644dfb93e9214f4afaa9c (diff)
downloadgnu-guix-593c3fe600a5f5e90a6eea3a175f83d3319b4efe.tar
gnu-guix-593c3fe600a5f5e90a6eea3a175f83d3319b4efe.tar.gz
monads: Fix 'anym'.
* guix/monads.scm (anym): Fix successful case. * tests/monads.scm ("anym"): New test.
Diffstat (limited to 'guix/monads.scm')
-rw-r--r--guix/monads.scm7
1 files changed, 4 insertions, 3 deletions
diff --git a/guix/monads.scm b/guix/monads.scm
index b62fc28a55..f5c9e8e9c7 100644
--- a/guix/monads.scm
+++ b/guix/monads.scm
@@ -228,9 +228,10 @@ lifted in MONAD, for which PROC returns true."
(()
(return #f))
((head tail ...)
- (mlet monad ((value head))
- (or (and=> (proc value) return)
- head
+ (mlet* monad ((value head)
+ (result -> (proc value)))
+ (if result
+ (return result)
(loop tail))))))))
(define-syntax listm