Partial Evaluation




At MIST, we have developed some tools devoted to analyse and transform functional logic programs, i.e., Curry programs. Those tools run in Pakcs 1.6.0, and they are:

  • A binding-time analyser for Flat programs: flatBta
  • The first approach to offline narrowing-driven partial evaluation, which was developed making slight changes over the original online narrowing-driven partial evaluator. This first attempt is here: offpeval_V.0.1
  • An offline partial evaluator. Theory and benchmarks related to this tool are publishied in our ICFP'05 paper. A broad explanation of the tool appears in our WCFLP'05 paper. The version with last changes is here: OffPeval
  • An annotating tool, for the pre-processing stage of the previous offline partial evaluator: ann
  • A domain specific embedded language for specification of software routers (for simulation), the library is here: rose, and an example in: router. For a complete description you can find here a report.

In the above links you can find a tar file, which contains the source code of each tool, a directory with examples and, of course, a HOWTO file with the instructions of the use.

Recently we have improved the pre-processing phase of the offline partial evaluator. For this, we developed a new annotating tool based on the size-change graphs formalism. The adaptation of the size-change graphs formalism to functional-logic languages appears in our LOPSTR'06 paper. The tool runs in the newest version of Pakcs 1.7.1. A broad explanation here.