Functional programming offers an advantage over imperative programming: functional programs are easier to reason about and understand, which makes certain classes of errors less common. Yet, the two disciplines have some pitfalls in common: any computation, functional or not, may be non-terminating, or may terminate in a run-time error. Turner describes a discipline called ``Total Functional Programming'' (TFP) in which these pitfalls are impossible, due to some easily-checked rules which require all recursion to be done structurally. In this report, I detail my findings about the practical benefits and limitations of total functional programming, as well as the interactions which arise between TFP and the design and implementation of a rich functional programming language. These findings are the result of implementing a TFP compiler as a modification of the Glasgow Haskell Compiler (GHC), as well as a total standard library and a variety of total example programs.
Library of Congress Subject Headings
Functional programming (Computer science); Haskell (Computer program language)
Department, Program, or Center
Computer Science (GCCIS)
Voelker, Karl, "Practical programming with total functions" (2010). Thesis. Rochester Institute of Technology. Accessed from
RIT – Main Campus