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}