A supercompiler is a program transformer that traces the possible generalized histories of computation by the source program, and builds an equivalent target program, whose structure is, in a sense, "simpler" than the structure of the source program. The simplification is achieved by removing certain "redundant" actions from the source program.
The goal of the project is to implement in Scala a positive supercompiler that is able to deal with higher-order functions.
The current version of hosc can be run as a command-line application or as a web-application.
hosc deals with programs written in a simple lazy functional language with higher-order functions. The intended operational semantics of the language is normal-order graph reduction to weak head normal form.
