School of Computing

Tool support for refactoring functional programs

Huiqing Li, Claus Reinke, and Simon Thompson

In Johan Jeuring, editor, ACM SIGPLAN 2003 Haskell Workshop, pages 182-196. Association for Computing Machinery, August 2003.


Refactorings are source-to-source program transformations which change program structure and organisation, but not program functionality. Documented in catalogues and supported by tools, refactoring provides the means to adapt and improve the design of existing code, and has thus enabled the trend towards modern agile software development processes. Refactoring has taken a prominent place in software development and maintenance, but most of this recent success has taken place in the OO and XP communities.

In our project, we explore the prospects for Refactoring Functional Programs, taking Haskell as a concrete case-study. This paper discusses the variety of pragmatic and implementation issues raised by our work on the Haskell Refactorer. We briefly introduce the ideas behind refactoring, and a set of elementary functional refactorings. The core of the paper then outlines the main challenges that arise from our aim to produce practical tools for a decidedly non-toy language, summarizes our experience in trying to establish the necessary meta-programming infrastructure and gives an implementation overview of our current prototype refactoring tool. Using Haskell as our implementation language, we also offer some preliminary comments on Haskell programming-in-the-large.

Download publication 139 kbytes (PostScript)

Bibtex Record

author = {Huiqing Li and Claus Reinke and Simon Thompson},
title = {Tool Support for Refactoring Functional Programs},
month = {August},
year = {2003},
pages = {182-196},
keywords = {determinacy analysis, Craig interpolants},
note = { },
doi = {},
url = {},
    publication_type = {inproceedings},
    submission_id = {23380_1060161103},
    booktitle = {ACM SIGPLAN 2003 Haskell Workshop },
    editor = {Johan Jeuring},
    organization = {Association for Computing Machinery},
    refereed = {Refereed},
    ISBN = {1-58113758-3},

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 21/03/2014