Nicolas,
Someone already mentioned John Hughes paper. Another
resource is SPJ's
"hair shirt" slides (also discusses type classes and monads).
http://research.microsoft.com/~simonpj/papers/haskell-retrospective/HaskellRetrospective.pdf
Laziness is addressed beginning on slide 19.
I've even read "History of Haskell" paper, and accordingly to it the
default laziness was chosen because it was rather unite factor for
scientists, not because it had some big advantage:
Then, in the late 70’s and early 80’s, something new happened. A
series of seminal publications ignited an explosion of interest in the
idea of lazy (or non-strict, or call-by-need) functional languages as
a vehicle for writing serious programs.
So, as I understand, choosing default laziness was just experimental
design decision in order to answer the question: "how good lazy
language can be". I am practically convinced, that lazy evaluation
included in the _right_ places can be extremely useful. I didn't state
the question as "strict vs lazy", my question is different - "default
laziness with optional strict -vs- default strictness with optional
lazy". And sorry, but the question remains open.
Best regards,
Nick.