MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Type Classes with Functional Dependencies (2000) [116 citations — 1 self]

Abstract:

. Type classes in Haskell allow programmers to define functions that can be used on a set of di#erent types, with a potentially different implementation in each case. For example, type classes are used to support equality and numeric types, and for monadic programming. A commonly requested extension to support `multiple parameters' allows a more general interpretation of classes as relations on types, and has many potentially useful applications. Unfortunately, many of these examples do not work well in practice, leading to ambiguities and inaccuracies in inferred types and delaying the detection of type errors. This paper illustrates the kind of problems that can occur with multiple parameter type classes, and explains how they can be resolved by allowing programmers to specify explicit dependencies between the parameters. A particular novelty of this paper is the application of ideas from the theory of relational databases to the design of type systems. 1 Introduction ...

Citations

345 The Theory of Relational Databases – Maier - 1983
280 How to make ad-hoc polymorphism less ad-hoc – Wadler, Blott - 1989
162 A system of constructor classes: overloading and implicit higher-order polymorphism – Jones - 1995
112 Qualified Types: Theory and Practice – Jones - 1992
74 Type classes: Exploring the design space – Jones, Jones, et al. - 1997
68 Dependency Structures of Data Base Relationships – ARMSTRONG - 1974
44 Simplifying and improving qualified types – Jones - 1995
16 Parametric type classes (extended abstract – Chen, Hudak, et al. - 1992
15 An approach to overloading with polymorphism – Blott - 1991
10 Bulk types with class – Jones - 1996
2 Edison User’s Guide – Okasaki - 1999