It's fairly trivial to demonstrate to oneself that pure functional programming requires laziness to a degree that it makes no sense not to have it as a first-class facility in the language. Haskell's original design was admittedly extreme, but has since reached a serviceable balance, most code being lazy.