Portland State University. Department of Computer Science
Mark P. Jones
Date of Award
Doctor of Philosophy (Ph.D.) in Computer Science
1 online resource (vi, 200 pages)
Functional programming languages, Haskell (Computer program language), Functional programming (Computer science)
Type classes, first proposed during the design of the Haskell programming language, extend standard type systems to support overloaded functions. Since their introduction, type classes have been used to address a range of problems, from typing ordering and arithmetic operators to describing heterogeneous lists and limited subtyping. However, while type class programming is useful for a variety of practical problems, its wider use is limited by the inexpressiveness and hidden complexity of current mechanisms. We propose two improvements to existing class systems. First, we introduce several novel language features, instance chains and explicit failure, that increase the expressiveness of type classes while providing more direct expression of current idioms. To validate these features, we have built an implementation of these features, demonstrating their use in a practical setting and their integration with type reconstruction for a Hindley-Milner type system. Second, we define a set-based semantics for type classes that provides a sound basis for reasoning about type class systems, their implementations, and the meanings of programs that use them.
Morris, John Garrett, "Type Classes and Instance Chains: A Relational Approach" (2013). Dissertations and Theses. Paper 1010.