Type Debugging in Functional Languages
Brendon Wyber
Department of Computer Science
University of Canterbury
Abstract
One of the features of functional languages, such as Haskell and SML, is that the data types of the variables and functions can be inferred from their usage. Unfortunately when an error occurs from this type inference, it may be difficult for a novice programmer to trace the errors source. We introduce two categories of type errors. Explicit type errors are caused by the user attempting to use incompatible types together. Attributed type errors are the result of editing or syntactical mistakes that are not detected until type checking occurs. The programmer requires differing forms of error messages to debug each category of type error more effectively. We present these display systems and determine that to implement them, the type of each sub-expression in the code must be inferred. This can be implemented using an algorithm given by Beaven and Stansifer.