Type Classes with Functional Dependencies (2000) [116 citations — 1 self]
http://www.cs.pdx.edu/~sheard/course/AdvancedFP/pa
http://cse.cse.ogi.edu/PacSoft/publications/2000/f
DBLP
CACHED:
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 |

