
Jerzy Karczmarczuk writes (in the Haskell cafe):
OK, I admit that I will never understand these complaints about the inefficiency of non-strict computations, since what I *require* in most of my work is laziness. Had I needed strictness for the sake of efficiency, I would use a different language instead of throwing dirt at Haskell.
Sometimes lazy is better, sometimes eager. That's why I want to use both strategies in one language and program. I think complaints about ineffeciency of non-strict computations can be valid. It's nice to write sum = foldl (+) 0 main = print ( sum [1..100000]) but if your program runs out of stack you don't want to switch to another language.
Clean has not only those ubiquitous !annotations, but has a powerful strickness analyzer, which alleviates their use.
Strictness analysis is undecidable in general and there are situations (in real programs) where Clean's strictness analysis falls short. Cheers, Ronny Wichers Schreur