Browse Source

monads: Fix 'anym'.

* guix/monads.scm (anym): Fix successful case.
* tests/monads.scm ("anym"): New test.
wip-grafts
Ludovic Courtès 8 years ago
parent
commit
593c3fe600
  1. 7
      guix/monads.scm
  2. 12
      tests/monads.scm

7
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

12
tests/monads.scm

@ -163,6 +163,18 @@
%monads
%monad-run))
(test-assert "anym"
(every (lambda (monad run)
(eq? (run (with-monad monad
(let ((lst (list (return 1) (return 2) (return 3))))
(anym monad
(lambda (x)
(and (odd? x) 'odd!))
lst))))
'odd!))
%monads
%monad-run))
(test-end "monads")

Loading…
Cancel
Save