Refactorings for Haskell

This is a catalogue of refactorings for the functional programming language Haskell, implemented in the Haskell Refactorer, built by the Refactoring Functional Programs project.

Items in the catalogue are described by a schema available in html format. Short definitions for some terms used in the catalogue are listed here.

Catalogue of implemented refactorings

Add or remove an argument,
Delete/Add a definition,
Introduce or remove a duplicate definition,
Simple folding/unfolding,
Generalise or specialise a definition,
Introduce A New Definition,
Widen or narrow definition scope,
Widen or narrow definition scope, with compensation (generalise/specialise),
Renaming,

Categories

The refactorings in the catalogue come in a number of (non-exclusive) categories. A category tends to determine the conditions that will apply to the refactoring being applied successfully. The current categories are:

MultiModule
Naming

Other refactorings

Refactorings are a particular sort of program transformation. The folding transformation, first described by Burstall and Darlington, is not simply a program to program rewriting; it requires a record of previous definitions of an indentifier in order to be implemented successfully.

Other refactorings that we intend to implement in the Haskell Refactorer, together with some refactoring challenges and not-quite-refactorings, are listed here.