Chapter 2. Patterns for I/O


"I believe that the monadic approach to programming, in which actions are first class values, is itself interesting, beautiful and modular. In short, Haskell is the world's finest imperative programming language"

 --Tackling the Awkward Squad, Simon Peyton Jones

It is remarkable that we can do side-effecting I/O in a pure functional language!

We start this chapter by establishing I/O as a first-class citizen of Haskell. The bulk of this chapter is concerned with exploring three styles of I/O programming in Haskell.

We start with the most naïve style: imperative style. From there, we move on to the elegant and concise "lazy I/O", only to run into its severe limitations. The way out is the third and last style we explore: ...

Get Haskell Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.