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: ...