view categorical/monad.clj @ 6:b2f55bcf6853

fixed comments
author Robert McIntyre <rlm@mit.edu>
date Fri, 28 Oct 2011 04:56:15 -0700
parents b4de894a1e2e
children
line wrap: on
line source

2 (ns categorical.monad)
3 (use 'clojure.contrib.monads)
5 (in-ns 'categorical.monad)
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.
9 (defmonad amb
10 [
11 m-result (fn[& vals] (cons 'amb vals))
12 m-bind (fn[amb-seq f] (cons 'amb (map f (rest amb-seq))))
13 ]
14 )