Home The Haskell Programmer's Guide to the IO Monad --- Don't Panic The Haskell Programmer's Guide to the IO Monad - Don't Panic. Stefan Klinger. Why do I need a monad for IO in Haskell? The standard explanation is, that the IO monad hides the non-functional IO actions ---which do have side effects--- from the functional world of Haskell. But how does this "hiding" work, apart from having IO actions disappearing beyond the borders of my knowledge? This report scratches the surface of category theory, an abstract branch of algebra, just deep enough to find the monad structure. On the way we discuss the relations to the purely functional programming language Haskell. Finally it should become clear how the IO monad keeps Haskell pure. It's hard for me to judge how successful this tutorial is going to be with beginners, but it seems well written. The target audience isn't porgrammers trying to learn about monads as a programming construct, but rather programmers that want to get a taste of theory. Comment viewing options Flat list - collapsed Flat list - expanded Threaded list - collapsed Threaded list - expanded Date - newest first Date - oldest first Select your preferred way to display the comments and click "Save settings" to activate your changes.