How is it so? Lazy evaluation (and thus the concept of a (weak-head) normal form, and the possibilty of space leaks) is pretty fundamental to Haskell. It's also impossible to write generic folds (i.e. without adding an NFData constraint, which comes from outside the standard library) that evaluate further than WHNF. And just making all things may lead to worse performance or even non-termination in some cases, anyway.