| > 1. How the #$!? do I read some data from a file. Good, I've | > got the data, now I can work on it. Nope, now I have an "IO | > thingie" whatever that is, but all of the standard functions want | > a regular "thingie" now what? Perhaps this would be a good moment to advertise the revised version of Tackling the Tackling the Awkward Squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell http://research.microsoft.com/~simonpj/#marktoberdorf (Concerning the thread I'm responding to, it gives an introduction to monadic input/output.) I've revised and extended this tutorial quite a bit since I announced it last year, with a lot of help from people on the Haskell mailing list: thank you! Further suggestions are most welcome. Simon Abstract Functional programming may be beautiful, but to write real applications we must grapple with awkward real-world issues: input/output, robustness, concurrency, and interfacing to programs written in other languages. These lecture notes give an overview of the techniques that have been developed by the Haskell community to address these problems. I introduce various proposed extensions to Haskell along the way, and I offer an operational semantics that explains what these extensions mean.