In haskell expressions are not evaluated until their results are actually needed. That has a lot of consequences, a few of them being: \slidep \begin{itemizep} \item infinite data structures are now possible (recursive and non-recursive) \item defining new control structures by just defining a function (since not everything is evaluated... who needs if-then-else anyway?) \item important for compositional programming and efficiency \end{itemizep}