Skip to main content

Data-Driven Refactorings for Haskell

Adams, Stephen (2017) Data-Driven Refactorings for Haskell. Doctor of Philosophy (PhD) thesis, University of Kent,.

PDF - Publisher pdf

Creative Commons Licence
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Download (1MB) Preview


Agile software development allows for software to evolve slowly over time. Decisions made during the early stages of a program's lifecycle often come with a cost in the form of technical debt. Technical debt is the concept that reworking a program that is implemented in a naive or "easy" way, is often more difficult than changing the behaviour of a more robust solution. Refactoring is one of the primary ways to reduce technical debt. Refactoring is the process of changing the internal structure of a program without changing its external behaviour. The goal of performing refactorings is to increase code quality, maintainability, and extensibility of the source program. Performing refactorings manually is time consuming and error-prone. This makes automated refactoring tools very useful. Haskell is a strongly typed, pure functional programming language. Haskell's rich type system allows for complex and powerful data models and abstractions. These abstractions and data models are an important part of Haskell programs. This thesis argues that these parts of a program accrue technical debt, and that refactoring is an important technique to reduce this type of technical debt. Refactorings exist that tackle issues with a program's data model, however these refactorings are specific to the object-oriented programming paradigm. This thesis reports on work done to design and automate refactorings that help Haskell programmers develop and evolve these abstractions. This work also discussed the current design and implementation of HaRe (the Haskell Refactorer). HaRe now supports the Glasgow Haskell Compiler's implementation of the Haskell 2010 standard and its extensions, and uses some of GHC's internal packages in its implementation.

Item Type: Thesis (Doctor of Philosophy (PhD))
Thesis advisor: Thompson, Simon
Uncontrolled keywords: refactoring, functional programming, haskell
Divisions: Faculties > Sciences > School of Computing
SWORD Depositor: System Moodle
Depositing User: System Moodle
Date Deposited: 16 Oct 2018 09:10 UTC
Last Modified: 29 May 2019 21:17 UTC
Resource URI: (The current URI for this page, for reference purposes)
  • Depositors only (login required):


Downloads per month over past year