I found these articles very valuable in understanding the original 
motivation for monads and their use for practical development.

Imperative Functional Programming
Simon Peyton Jones, Philip Wadler
http://research.microsoft.com/pubs/67066/imperative.ps.z

Monadic Parser Combinators
Graham Hutton
http://eprints.nottingham.ac.uk/237/1/monparsing.pdf

On Friday, October 26, 2012 9:06:59 AM UTC-7, Brian Craft wrote:
>
> I've read about four tutorials on monads so far, but it still escapes me.
>
> In fact, I'm still not sure what problem it solves. I'm familiar with the 
> problem of having, say, three functions like f(a) -> b, g(c) -> d, h(e) -> 
> f, which you'd like to chain like f(g(h(x))), but you can't because b is a 
> different type from c and d is a different type from e. The monad tutorials 
> all start with a problem like this, but I still can't tell if they're 
> actually providing a solution, because it appears every monad is specific 
> to a particular type. E.g. a sequence monad. So, great, I have something 
> that takes a scalar and returns a sequence. That might solve g(h(x)) if f 
> is a scalar and c is a sequence by letting me write g(s(h(x))), but it 
> doesn't solve the whole problem, since I still have f() to worry about.
>
> So, two specific questions. First, do monads provide a generic solution, 
> so I can apply f(g(h(x)))? Second, is it the whole point of monads to use 
> macros so you don't see the glue functions, like s(), in my example? I 
> mean, we can always write glue functions so we can compose functions with 
> different input/output types without using monads. What exactly are monads 
> adding?
>
> Oh, and one more. If I were to actually use a monad in a piece of 
> production code, what are the chances that the next person working on the 
> code would have the faintest idea how it worked? ;-p
>

-- 
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