aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/monads/examples.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/monads/examples.clj')
-rw-r--r--src/clojure/contrib/monads/examples.clj16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/clojure/contrib/monads/examples.clj b/src/clojure/contrib/monads/examples.clj
index 98ffaecd..54748d74 100644
--- a/src/clojure/contrib/monads/examples.clj
+++ b/src/clojure/contrib/monads/examples.clj
@@ -7,6 +7,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(ns clojure.contrib.monads.examples
+ (:use [clojure.contrib.macros :only (lazy-and-standard-branch)])
(:use clojure.contrib.monads)
(:require (clojure.contrib [accumulators :as accu])))
@@ -150,9 +151,18 @@
; We define a convenience function that creates an infinite lazy seq
; of values obtained from iteratively applying a state monad value.
-(defn value-seq [f seed]
- (let [[value next] (f seed)]
- (lazy-cons value (value-seq f next))))
+(lazy-and-standard-branch
+
+ (defn value-seq [f seed]
+ (lazy-seq
+ (let [[value next] (f seed)]
+ (cons value (value-seq f next)))))
+
+ (defn value-seq [f seed]
+ (let [[value next] (f seed)]
+ (lazy-cons value (value-seq f next))))
+
+)
; Next, we define basic statistics functions to check our random numbers
(defn sum [xs] (apply + xs))