summary refs log tree commit diff
path: root/tests/monads.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/monads.scm')
-rw-r--r--tests/monads.scm14
1 files changed, 8 insertions, 6 deletions
diff --git a/tests/monads.scm b/tests/monads.scm
index 82f4b9989c..ac19d33f93 100644
--- a/tests/monads.scm
+++ b/tests/monads.scm
@@ -166,14 +166,16 @@
            (let* ((input (iota 100))
                   (order '()))
              (define (frob i)
-               ;; The side effect here is used to keep track of the order in
-               ;; which monadic values are bound.
-               (set! order (cons i order))
-               i)
+               (mlet monad ((foo (return 'foo)))
+                 ;; The side effect here is used to keep track of the order in
+                 ;; which monadic values are bound.  Perform the side effect
+                 ;; within a '>>=' so that it is performed when the return
+                 ;; value is actually bound.
+                 (set! order (cons i order))
+                 (return i)))
 
              (and (equal? input
-                          (run (sequence monad
-                                         (map (lift1 frob monad) input))))
+                          (run (sequence monad (map frob input))))
 
                   ;; Make sure this is from left to right.
                   (equal? order (reverse input)))))