A data structure which grows bigger, or lives longer, than
might be expected. Such unexpected memory use can cause a
from excessive laziness. For example, the
Haskell function
sum [] = 0
sum (x:xs) = x + sum xs
when applied to a list will build a chain of closures for the
additions and only when it reaches the end of the list will it
perform the additions and free the storage. Another example
is the function
mean l = sum l / length l
The sum function forces the entire list l to be evaluated and
built in the heap. None of it can be garbage collected until
the length function has consumed it.