Haskell uses a lazy evaluation system which allows you define as many terms as you like, safe in the knowledge that the compiler will only allocate the ones you use in an expression. In this article ...