Point-free Program Transformation
This is a project where I,
José Proença, worked on since April until October 2005. It was supervised by
Jorge Sousa Pinto and
Alcino Cunha, who supported and helped me during this time. The proposal is explained in more detailed in
here. The results can be found in my internship report,
here.
The project consists on two parts:
- Definition of two refactorings -- the conversion from point-wise to pointfree and the removal of guards;
- Automatic simplification and transformation of pointfree expressions.
Refactorings in HaRe
In the begining of the project, I spent two weeks in Canterbury developing two refactorings to be part of
HaRe:
A snapshot of the source code where these transformations are applied can be found
here.
There are also some examples that can be found in the following links:
The SimpliFree Tool
Allows for the automatic simplification and some program transformation of Haskell code, written in a point-free style. The technical report is available
here. The SimpliFree tool is now available in the Uminho Haskell Libraries, that can be downloaded from the
CVS repository.
This tool uses Haskell pattern matching to apply rules, by creating an auxiliary file with the functions where the strategies, rules and the pointfree terms are defined. In spite of the fact that this approach meant to be simpler than most approaches where a pattern matching algorithm is defined, the definitions of functions that apply a rule were more complex than expected.
In September, this tool, together with the DrHylo tool and the Pointless library, were presented in IFL'05 workshop.
The presentation "A Framework for Point-free Program Transformation", shown in this workshop, can be found
here.
The SimpliFree tool was also presented in the PURe Workshop 2005. The slides can be found
here.