aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/monads
diff options
context:
space:
mode:
authorKonrad Hinsen <konrad.hinsen@laposte.net>2009-03-24 09:59:38 +0000
committerKonrad Hinsen <konrad.hinsen@laposte.net>2009-03-24 09:59:38 +0000
commit55dc30a8745b6138d50aae4be49194ab40c52f67 (patch)
tree09934f9323d4e23be71d2bd2fad349c0283692c6 /src/clojure/contrib/monads
parent22fe339ab2396963634688afed7fd7b4a09f8192 (diff)
monads: implemented :let as in Clojure's for
Diffstat (limited to 'src/clojure/contrib/monads')
-rw-r--r--src/clojure/contrib/monads/examples.clj12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/clojure/contrib/monads/examples.clj b/src/clojure/contrib/monads/examples.clj
index 850fc19d..a216cb39 100644
--- a/src/clojure/contrib/monads/examples.clj
+++ b/src/clojure/contrib/monads/examples.clj
@@ -43,12 +43,22 @@
y (range 3)]
(+ x y)))
+; Conditions are written with :when, as in Clojure's for form:
(domonad sequence-m
[x (range 5)
y (range (+ 1 x))
- :when (= (+ x y) 2)]
+ :when (= (+ x y) 2)]
(list x y))
+; :let is also supported like in for:
+(domonad sequence-m
+ [x (range 5)
+ y (range (+ 1 x))
+ :let [sum (+ x y)
+ diff (- x y)]
+ :when (= sum 2)]
+ (list diff))
+
; An example of a sequence function defined in terms of a lift operation.
(with-monad sequence-m
(defn pairs [xs]