Skip to main content
Article thumbnail
Location of Repository

Clone Detection and Elimination for Haskell

By Christopher Brown and Simon Thompson


Duplicated code is a well known problem in software maintenance and refactoring. Code clones tend to increase program size and several studies have shown that duplicated code makes maintenance and code understanding more complex and time consuming. This paper presents a new technique for the detection and removal of duplicated Haskell code. The system is implemented within the refactoring framework of the Haskell Refactorer (HaRe), and uses an Abstract Syntax Tree (AST) based approach. Detection of duplicate code is automatic, while elimination is semi-automatic, with the user managing the clone removal. After presenting the system, an example is given to show how it works in practice

Topics: QA76
Publisher: ACM Press
Year: 2010
OAI identifier:

Suggested articles


  1. (1999). 2nd edition,
  2. A space-economical suffix tree construction algorithm.
  3. (2001). An Empirical Study of Operating Systems Errors. In
  4. (2008). An evaluation of duplicate code detection using anti-unification.
  5. Ccfinder: a multilinguistic token-based code clone detection system for large scale source code.
  6. (2009). Clone Detection and Removal for Erlang/OTP within a Refactoring Environment.
  7. (1998). Clone detection using abstract syntax trees.
  8. (2009). Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qualitative Approach.
  9. (2003). Haskell 98 Language and Libraries, the Revised Report.
  10. (2003). Haskell Tools from the Programatica Project.
  11. (1993). Identifying Redundancy in Source Code Using Fingerprints. In
  12. (1985). Lambda lifting: Transforming programs to recursive equations.
  13. (2006). Refactoring Haskell Programs.
  14. (2007). Scalable and accurate tree-based detection of code clones.
  15. (2010). Similar Code Detection and Elimination for Erlang Programs.
  16. (2002). Software quality analysis by code clones in industrial legacy software.
  17. (2001). Tool Demonstration: Finding Duplicated Code Using Program Dependences.
  18. (2003). Tool Support for Refactoring Functional Programs.
  19. (2008). Tool Support for Refactoring Haskell Programs.
  20. (2001). Vim (Vi Improved).

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