by Andreas Rossberg, Martin Sulzmann
http://www.ps.uni-sb.de/Papers/abstracts/btclasses.ps
Add To MetaCart
Abstract:
We discuss type classes in the context of the Chameleon language, a Haskell-style language where overloading resolution is expressed in terms of the meta-language of Constraint Handling Rules (CHRs). In a first step, we show how to encode Haskell's single-parameter type classes into Chameleon. The encoding works by providing an approrpriate set of CHRs which mimic the Haskell conditions. We also consider constructor classes, multi-parameter type classes and functional dependencies. Chameleon provides a testbed to experiment with new overloading features. We show how some novel features such as universal quantification in context can naturally be expressed in Chameleon. 1.
Citations
|
267
|
How to make ad-hoc polymorphism less ad-hoc
– Wadler, Blott
- 1989
|
|
164
|
A system of constructor classes: Overloading and implicit higher-order polymorphism
– Jones
- 1993
|
|
146
|
Cayenne - a Language with Dependent Types
– Augustsson
- 1998
|
|
115
|
Qualified types: Theory and practice
– Jones
- 1992
|
|
105
|
Type classes with functional dependencies
– Jones
- 2000
|
|
71
|
Type classes: an exploration of the design space
– Jones, Jones, et al.
- 1997
|
|
70
|
Type inference for records in a natural extension of ML
– Rémy
- 1993
|
|
67
|
A polymorphic record calculus and its compilation
– Ohori
- 1995
|
|
56
|
A Polymporphic Type System for Extensible Records and Variants
– Gaster, Jones
- 1996
|
|
42
|
Parametric overloading in polymorphic programming languages
– Kaes
- 1988
|
|
41
|
A generic programming extension for Haskell
– Hinze
- 1999
|
|
38
|
Parametric Type Classes
– Chen, Hudak, et al.
- 1992
|
|
37
|
Garca de la
– Demoen, M
- 1999
|
|
33
|
A theory of overloading
– Stuckey, Sulzmann
|
|
31
|
et al. Report on the programming language Haskell 98
– Jones, Hughes
- 1999
|
|
15
|
Type classes in Mercury
– Jeffery, Henderson, et al.
- 2000
|
|
15
|
Dependently Typed Data Structures
– Xi
- 1999
|
|
14
|
Language reportConcurrent Clean
– Plasmeijer, Eekelen
- 1998
|
|
12
|
A functional notation for functional dependencies
– Neubauer, Thiemann, et al.
- 2001
|
|
11
|
Functional logic overloading
– Gasbichler, Neubauer, et al.
- 2002
|
|
9
|
An overview of Edison
– Okasaki
- 2000
|
|
7
|
Restricted data types in Haskell
– Hughes
- 1999
|
|
4
|
et al. The Mercury language reference manual
– Henderson
- 2001
|
|
3
|
A theory of overloading part II: semantics and coherence
– Sulzmann, Rossberg
- 2002
|
|
1
|
Fun with functional dependencies or (draft) types as values in static computations in haskell
– Hallgren
- 2001
|
|
1
|
The Chameleon Language Manual
– Sulzmann
- 2002
|