In the proposed Haskell compiler, there are two steps:
- Compile Haskell terms to lazy LCi terms.
- Compile lazy LCi terms to eager LCi terms.
- Annotate arguments to calls strict, or assume they should be reduced strictly in the rewrite semantics, in the first step. Have a mixed approach compiler in the second step.
- Generate terms such that arguments reduce to NF first according to lazy evaluation, then use the simple 'thunkification' method in the second step.
Some reading to do...
Bored by ridiculously long compile times.