aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/monads
diff options
context:
space:
mode:
authorKonrad Hinsen <konrad.hinsen@laposte.net>2009-02-15 22:04:30 +0000
committerKonrad Hinsen <konrad.hinsen@laposte.net>2009-02-15 22:04:30 +0000
commitab67c84237f052fea57d7cbfc45d7908026f46fa (patch)
tree21757506115ff02b6ee257532e48e3bfb914effe /src/clojure/contrib/monads
parent742d0143421335f7eea6ca858efe9af576ec8f6a (diff)
monads: fixes to make it work with the lazy branch
Diffstat (limited to 'src/clojure/contrib/monads')
-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))