TR-2006-09
Modular Type Classes
Derek Dreyer; Robert Harper; Manuel M.T. Chakravarty; Gabriele Keller. 26 October, 2006.
Communicated by Pedro Felzenszwalb.
Supersedes: TR-2006-03 (updated 10/26/06)
Abstract
ML modules and Haskell type classes have proven to be highly effective
tools for program structuring. Modules emphasize explicit
configuration of program components and the use of data abstraction.
Type classes emphasize implicit program construction and ad hoc
polymorphism. In this paper, we show how the implicitly-typed style
of type class programming may be supported within the framework of an
explicitly-typed module language by viewing type classes as a
particular mode of use of modules. This view offers a harmonious
integration of modules and type classes, where type class features,
such as class hierarchies and associated types, arise naturally as
uses of existing module-language constructs, such as module
hierarchies and type components. In addition, programmers have
explicit control over which type class instances are available for use
by type inference in a given scope. We formalize our approach as a
Harper-Stone-style elaboration relation, and provide a sound type
inference algorithm as a guide to implementation.
Original Document
The original document is available in PDF (uploaded 26 October, 2006 by
Pedro Felzenszwalb).