According to one guy's analogy: the Real World is strict - in order to
drink tea, you have to put the cattle on the fire, wait until water
boils, brew tea and then drink. Not the cattle is put on the fire, water
boils and the tea is brewed when you take the empty cup to start
drinking. :-)
I think the word you meant there is "kettle", since "cattle" are what
get turned into burgers ;-) Still, the idea of water-boil-tea-brew
happening by demand would probably save electricity in our
energy-conscious world. Don't boil a full kettle for a single cuppa!
Of course, I meant "kettle" that should be put on the fire. I was not
intended to singe poor cows for a cup of tea.:-D
The question is the following: how big the gap between strict languages
with lazy constructs and Haskell? Does the default lazyness have
irrefutable advantage over default strictness?
That kinda leads into thoughts of the Turing tar-pit, where everything
is possible but hopelessly obfuscated by the constraints of the
language.
I think default laziness, to answer your actual question, has advantage
in terms of thought process. It helps me consider things in terms of
dependencies. To go back to the analogy: in the strict style it's very
easy to boil the kettle and then let the water go cold. This is a waste
of energy (CPU time, or whatever).
So whether it's *computationally* more valuable, I don't know. But I
find that it helps me to order my thoughts about what a problem *needs*.
Well, as I understood, for your way of thinking lazy language is more
suitable. I see, this is good motive for you (or people like you, I
guess you have solid mathematical background or something like that) to
choose Haskell or other language with default laziness, but the
question in general remains open...