Mercurial > dylan
annotate categorical/monad.clj @ 11:1f112b4f9e8f tip
Fixed what was baroque.
author | Dylan Holmes <ocsenave@gmail.com> |
---|---|
date | Tue, 01 Nov 2011 02:30:49 -0500 |
parents | b4de894a1e2e |
children |
rev | line source |
---|---|
rlm@2 | 1 |
rlm@2 | 2 (ns categorical.monad) |
rlm@2 | 3 (use 'clojure.contrib.monads) |
rlm@2 | 4 |
rlm@2 | 5 (in-ns 'categorical.monad) |
rlm@2 | 6 |
rlm@2 | 7 ;; To implement nondeterministic programs, we'll use a lazy seq to represent a value which may be any one of the members of seq. |
rlm@2 | 8 |
rlm@2 | 9 (defmonad amb |
rlm@2 | 10 [ |
rlm@2 | 11 m-result (fn[& vals] (cons 'amb vals)) |
rlm@2 | 12 m-bind (fn[amb-seq f] (cons 'amb (map f (rest amb-seq)))) |
rlm@2 | 13 ] |
rlm@2 | 14 ) |