[project @ 2001-09-07 12:42:46 by simonpj]
------------------------
Fix the demand analyser
------------------------
A spiffy new domain for demands, and definitions for lub/both
which are actually monotonic. Quite a bit of related jiggling
around.
One of the original motivations was to do with functions like:
sum n [] = n
sum n (x:xs) = sum (n+x) xs
Even though n is returned boxed from the first case, we don't want
to get strictness
S(L)V -> T
because that means we pass the box for n, and that is TERRIBLE.
So the new version errs on the side of unboxing, more like the forwards
analyser, and only passes the box if it is *definitely* needed, rather
than if it *may* be needed.