PolyP - a polytypic programming language extension
Full text paper (
Many functions have to be written over and over again for different
datatypes, either because datatypes change during the development of
programs, or because functions with similar functionality are needed
on different datatypes.
Examples of such functions are pretty printers, debuggers, equality
functions, unifiers, pattern matchers, rewriting functions, etc.
Such functions are called polytypic functions. A polytypic function
is a function that is defined by induction on the structure of
This paper extends a functional language (a subset of Haskell) with
a construct for writing polytypic functions.
The extended language type checks definitions of polytypic
functions, and infers the types of all other expressions using an
extension of Jones' theories of qualified types and higher-order
The semantics of the programs in the extended language is obtained
by adding type arguments to functions in a dictionary passing style.
Programs in the extended language are translated to Haskell.
Last modified: Tue Aug 17 15:24:18 MET DST 1999
Patrik Jansson /