On Sat, Feb 23, 2008 at 03:54:39PM +0100, Lemmih wrote:
Actually, it might be wise not to do any optimizations in the substitution routine. I assume constant applications are handled elsewhere as well?
The atom invariant insures that beta reduction is a simple source transformation that does not change the behavior of the program, not an optimization. E normal form number 2 (a name I just made up :) ) says all arguments must be atomic, all applied things may only be simple variables or another application, and lambda expressions may only occur directly on the RHS of a let binding, the body of a let statment, or in a case branch body. normal form 3 (after lambda lifting) says lambda expressions may _only_ occur at the top level, no where else. John -- John Meacham - ⑆repetae.net⑆john⑈