Skip to main content
Article thumbnail
Location of Repository

Tool Support for Refactoring Functional Programs

By Huiqing Li and Simon Thompson


Tool Support for Refactoring Functional Programs We demonstrate the Haskell Refactorer, HaRe, and the Erlang Refactorer, Wrangler, as examples of fully-functional refactoring tools for functional programming languages. HaRe and Wrangler are designed to handle multi-module projects in complete languages: Haskell 98 and Erlang/OTP. They are embedded in emacs (and gvim) and respect programmer layout styles. In discussing the construction of HaRe and Wrangler, we comment on the different challenges presented by Haskell and Erlang due to their differences in syntax, semantics and pragmatics. In particular, we examine the sorts of analysis that underlie our systems. Finally, drawing on our experience, we examine features common to functional refactorings, and contrast these with refactoring in the object-oriented domain

Topics: QA76
Publisher: Assoc of Computing Machinery
Year: 2008
OAI identifier:

Suggested articles


  1. (2007). Programming Erlang. Pragmatic Bookshelf, doi
  2. (1996). Concurrent Programming doi
  3. (2004). Erlang Syntax Tools. doc-5.4.12/lib/syntax_tools-1.4.3,
  4. (1999). Refactoring: Improving the Design of Existing Code.
  5. (2002). Distel: Distributed Emacs Lisp (for Erlang).
  6. (2001). Generic Programming with Strafunski. http: //,
  7. (2006). Refactoring Haskell Programs. doi
  8. (2003). Tool Support for Refactoring Functional Programs. doi
  9. (2006). A Comparative Study of Refactoring Haskell and Erlang Programs. doi
  10. (2005). Formalising Haskell Refactorings.
  11. (2005). The Haskell Refactorer, HaRe, and its API. doi
  12. (2003). 98 Language and Libraries: the Revised Report.
  13. (2007). Veriļ¬cation of Refactorings in Isabelle/HOL. MSc thesis,
  14. (1996). Concurrent Programming in Erlang. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.