
Don Stewart:
"Optimisations" enable strictness analysis.
Luke Palmer:
I was actually being an annoying purist. "f is strict" means "f _|_ = _|_", so strictness is a semantic idea, not an operational one. Optimizations can change operation, but must preserve semantics.
Henning Thielemann:
Maybe I missed the point, but the optimization seems correct to me. [...]
I guess the obvious clarification to make here is that strictness analysis doesn't make non-strict functions strict. It is about determining which functions are already strict. The *optimisation* is to transform call-by-need into call-by-value (or something like that). But that's an *operational* matter, as Luke points out. To preserve *semantics*, that transformation can only be allowed for functions which are already strict. Hence the need for strictness analysis as part of optimisation. So everybody is right. :-)