A look at Haskell’s approach of handling the execution and sequencing of IO as regular data structures, and not as special syntactical constructs.