Abstract:
A common task in programming is to arrange for data to be passed from the point where it first becomes available to the places where it is needed, which may be much further down the call hierarchy. One approach is to store the data in a global variable. Another alternative is to add extra parameters at each level to thread it from the point of supply to the point of use. Neither of these is particularly attractive: The former is inflexible, while the latter requires modification of the program text, adding auxiliary parameters to each function definition and call. This paper explores the design space for a third alternative, using types to direct the introduction and use of implicit parameters and so carry data from supply to use. This gives the flexibility of parameterization without the burden of adding parameters by hand. The most general point in the design space uses relations on types to support sophisticated forms of overloading, and includes several known systems ...
Citations
|
806
|
A Theory of Type Polymorphism in Programming
– Milner
- 1978
|
|
345
|
The Theory of Relational Databases
– Maier
- 1983
|
|
280
|
How to make ad-hoc polymorphism less ad-hoc
– Wadler, Blott
- 1989
|
|
217
|
Principal type schemes for functional programs
– Milner, Damas
- 1982
|
|
162
|
A system of constructor classes: overloading and implicit higher-order polymorphism
– Jones
- 1995
|
|
113
|
The principal type-scheme of an object in combinatory logic
– Hindley
- 1969
|
|
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
|
|
63
|
editors). Report on the Programming Language Haskell, A Non-strict Purely Functional Language (Version 1.2
– Hudak, Jones, et al.
- 1992
|
|
58
|
Implicit parameters: Dynamic scoping with static types
– Lewis, Launchbury, et al.
- 2000
|
|
49
|
Programming Language Theory and its Implementation
– Gordon
- 1988
|
|
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
|
ML typing, explicit polymorphism and qualified types
– Jones
- 1994
|
|
10
|
Bulk types with class
– Jones
- 1996
|
|
9
|
Hugs 98 user manual
– Jones, Peterson
- 1999
|
|
2
|
Edison User’s Guide
– Okasaki
- 1999
|