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,. (KAR id:69589)

PDF Publisher pdf
Language: English

Download (1MB) Preview
[thumbnail of 27sadamsThesisFinal.pdf]
This file may not be suitable for users of assistive technology.
Request an accessible format


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: Divisions > Division of Computing, Engineering and Mathematical Sciences > School of Computing
SWORD Depositor: System Moodle
Depositing User: System Moodle
Date Deposited: 16 Oct 2018 09:10 UTC
Last Modified: 16 Feb 2021 13:58 UTC
Resource URI: (The current URI for this page, for reference purposes)
  • Depositors only (login required):


Downloads per month over past year