Title: An Optimizer in Stratego for the Helium Core Language
Functional programs can be optimized by performing small
transformations on the expression tree. Such optimizing transformations
are performed by the Glasgow Haskell Compiler. These transformations can
be defined as transformation rules, and applied using strategies that
define the order of the transformations. Writing these transformations
using dynamic rewrite rules is the main goal of this thesis. The
transformations are to be performed on the Helium Core language. The
optimizer should be called directly by the Helium compiler.
The optimizer described in this thesis implements part of the simplifier
used in GHC. The implementation language is Stratego, a language in
which transformation rules and strategies for the application of these
rules can be separated. The optimizer currently optimizes code produced
by the Helium compiler, but it could work with any front-end producing
Helium Core expressions.