Hi,

I used monads in two projects.

* The last rewrite of ClojureQL before v1.0 used a state monad to keep track of 
various things during query creation.
* ClojureCheck also uses a monad approach to create and combine generators for 
test data.
* Dave Ray and I tried a monad style in the async branch of seesaw.

Both were custom monad implementations. Both work(ed) reasonably well. However 
things have a relatively high strangeness factor. Since the execution of things 
is deferred till someone actually runs the monad pipeline, you can't use your 
usual try/catch construct to take care of problems. Everything has to be 
constrained to your monadic function. So you need to have some way to error out 
of your monadic pipeline. This leads you to monad transformers and complicates 
things even more.

In Clojure I haven't seen a use were other approaches weren't just as feasible 
or were monads would have simplified things. They are a legal approach, but I 
would judge on a case-by-base basis.

Sincerely
Meikel

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to