Shrinking Reductions in SML.NET
- Nick Benton ,
- Andrew Kennedy ,
- Sam Lindley ,
- Claudio Russo
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages, Lübeck, Germany |
Published by Springer-Verlag Berlin, Heidelberg
One performance-critical phase in the SML.NET compiler involves rewriting intermediate terms to monadic normal form and performing non-duplicating β-reductions. We present an imperative algorithm for this simplification phase, working with a mutable, pointer-based term representation, which significantly outperforms our existing functional algorithm. This is the first implementation and evaluation of a linear-time rewriting algorithm proposed by Appel and Jim.