HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Reference request: Monads, continuations, and other functional CS concepts

Submitted by: @import:stackexchange-cs··
0
Viewed 0 times
conceptsreferencemonadsrequestfunctionalcontinuationsandother

Problem

I've been using Clojure for about 18 months. Recently, I've come across terms such as Monads, Continuations, et al which I'd like to learn about.

I could visit Wikipedia and read about these two topics, but I'm looking for a reference which also help me learn about related matters that I don't even know exist. Is there a book on this particular topic (if it even qualifies as one)? Would I pick these things up by learning about type systems or language design in general? Should I just learn Haskell to get exposure?

Solution

I agree with @jmite that the best resources on continuations are likely to come from the Scheme community. Here's a brief tutorial that looks very good: Jeremy H Brown, Advanced Scheme. The tutorial also discusses Scheme's hygienic macros which might also interest you since Clojure has a similarly powerful macro facility.

For monads I originally tried to learn from reading the Haskell community's research papers and gave up in despair. Eventually I found Simon Peyton Jones: "Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell", in Engineering theories of software construction, Hoare, Broy, Steinbruggen, ed., IOS Press, ISBN 1 58603 1724, 2001, pp47-96, which is somewhat better, but still written for an IQ higher than mine.

Finally I decided that
a monad is the type an object that allows you to implicitly thread a state variable through a bunch of computations, and gave up caring. So today I googled "monad threaded through computations" and found this absolutely brilliant tutorial: Noel Winstanley, "What the hell are monads", 1999

Context

StackExchange Computer Science Q#13398, answer score: 4

Revisions (0)

No revisions yet.