
It took me forever to get comfortable with monads.
I think it helps if you've seen continuations, or done FP before, or a
variety of things that build familiarity.
But probably the only thing that I think will work for the masses of
plodders (there are always a few stars to crash the curve) is a desire to
learn and tons of practice.
I wouldn't worry so much about the ideal way to introduce the material.
Oh, one other thing. You learn monads when you need them. You need IO
right away... well, after you tired of playing with pure functions in the
ghci sandbox.
my 2c.
t.
"Dan Piponi"
I don't buy this. As has been noted by others before, IO is a very special case, in that it can't be defined in Haskell itself, and there is no evaluation function runIO :: IO a -> a.
I'm not sure what a function of type m a -> a has to do with the concept of a monad. And I don't really see what the problem is with the IO monad not being definable in (pure) Haskell. IO exposes the same interface as every other Monad, and you need to use that interface to get visible results. So people have to learn it whatever. And the whole point of the Monad is that it's an interface, not a specific implementation.
I'd rather use a simple example like Maybe (modeling failure as an effect).
And I'd like to see more people getting off the ground doing interesting stuff with Haskell before their attention spans for pointless-seeming new stuff run out. I'm not talking about the smartest people in computer science courses here. I'm talking about the millions of people writing everyday Python and Ruby scripts, say, who might benefit from a more expressive, type-safe, well-thought out, fast and compiled language. -- Dan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe --- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.