Solution
= Solution
The standard <Haskell> definition and principal type are
``
iterate :: (a -> a) -> a -> [a]
iterate f x = x : iterate f (f x)
``
Under <lazy evaluation>, this produces successive states $x,f(x),f(f(x)),\ldots$ as demanded. An infinite spine does not require all elements to be evaluated at once; <productivity> still depends on the demanded computations terminating.