Monad describing multi-valued computations, like sequence-m,
but returning sets of results instead of sequences of results.
(defmonad set-m
"Monad describing multi-valued computations, like sequence-m,
but returning sets of results instead of sequences of results."
[m-result (fn m-result-set [v]
#{v})
m-bind (fn m-bind-set [mv f]
(apply clojure.set/union (map f mv)))
m-zero #{}
m-plus (fn m-plus-set [& mvs]
(apply clojure.set/union mvs))
])
Comments top
No comments for set-m. Log in to add a comment.