Karl Voelker


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)

Publication Date


Document Type


Department, Program, or Center

Computer Science (GCCIS)


Bischof, Hans-Peter


Note: imported from RIT’s Digital Media Library running on DSpace to RIT Scholar Works. Physical copy available through RIT's The Wallace Library at: QA76.62 .V64 2010


RIT – Main Campus