Tutorial: lazy functional programming in Haskell

In ACM's 1977 Turing Award Lecture [1], Backus argues that conventional imperative programming languages are inherently disorderly:Moreover, the assignment statement splits programming into two worlds. The first world comprises the right sides of assignment statements. This is an orderly world of expressions, a world that has useful algebraic properties (except that those properties are often destroyed by side effects). It is the world in which most useful computation takes place.