[plt-scheme] Common history among streams, continuations, and monads?
Hi folks,
Over the past week or two I've been looking at Haskell.
I read this paper:
http://research.microsoft.com/~simonpj/papers/history-of-haskell/index.htm
It was a fun read. It is really interesting to hear about the whole
story. It sounds like the Haskell folks wanted Scheme to be lazy, and
were hurt that it wasn't!
The paper mentions that IO in Haskell was originally implemented using
either streams or continuations. I'd never thought of something like
that before.
Are streams and continuations just part of the standard toolbox that
all FP developers hold? Is there some greater theory to streams and
continuations? I know of them as language features, but not more than
that.
In Haskell, those were replaced with doing IO via monads. Have they
all got something in common? Some shared thread?
I'm still reading up on what is so great about monads. It concerns me
when loads of folks say that "It is too complicated, don't worry about
it, just know that it is pure and that they work." I know someone
understands, I just haven't found that someone writing up a concise
explanation yet. There is the awkward squad paper on my list, of
course.