
Haskell Design Patterns
By :

"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. A 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: iteratee I/O.
As a binding thread, we carry a simple I/O example through all three styles. We will cover the following topics:
Change the font size
Change margin width
Change background colour