[project @ 2004-04-02 13:34:42 by simonpj]
Add a flag -fno-state-hack, which switches off the "state hack".
It's claims that every function over realWorldStatePrimTy is a
one-shot function. This is pretty true in practice, and makes a big
difference. For example, consider
a `thenST` \ r -> ...E...
The early full laziness pass, if it doesn't know that r is one-shot
will pull out E (let's say it doesn't mention r) to give
let lvl = E in a `thenST` \ r -> ...lvl...
When `thenST` gets inlined, we end up with
let lvl = E in \s -> case a s of (r, s') -> ...lvl...
and we don't re-inline E.