diff options
author | Konrad Hinsen <konrad.hinsen@laposte.net> | 2009-03-24 09:59:38 +0000 |
---|---|---|
committer | Konrad Hinsen <konrad.hinsen@laposte.net> | 2009-03-24 09:59:38 +0000 |
commit | 55dc30a8745b6138d50aae4be49194ab40c52f67 (patch) | |
tree | 09934f9323d4e23be71d2bd2fad349c0283692c6 /src/clojure/contrib/monads | |
parent | 22fe339ab2396963634688afed7fd7b4a09f8192 (diff) |
monads: implemented :let as in Clojure's for
Diffstat (limited to 'src/clojure/contrib/monads')
-rw-r--r-- | src/clojure/contrib/monads/examples.clj | 12 |
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] |