|
ABSTRACT
One purpose of type checking in programming languages is to guarantee a degree of "representation independence:" programs should not depend on the way stacks are represented, only on the behavior of stacks with respect to push and pop operations. In languages with abstract data type declarations, representation independence should hold for user-defined types as well as built-in types. We study the representation independence properties of a typed functional language (second-order lambda calculus) with polymorphic functions and abstract data type declarations in which data type implementations (packages) may be passed as function parameters and returned as results. The type checking rules of the language guarantee that two data type implementations P and Q are equivalence whenever there is a correspondence between the behavior of the operations of P and the behavior of the operations of Q.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
{Bruce, Meyer and Mitchell 85} Bruce, K. B., Meyer, A. R. and Mitchell, J. C., The semantics of second-order lambda calculus to appear
|
| |
3
|
|
| |
4
|
{Donahue 79} Donahue, J., On the semantics of data type. <i>SIAM J. Computing</i> 8 1979. pages 546--560
|
| |
5
|
{Friedman 75} Friedman, H., Equality Between Functionals. In R. Parikh (ed.), <i>Logic Colloquium,</i> pages 22--37. Springer-Verlag 1975.
|
| |
6
|
{Girard 71} Girard, J.-Y., Une extension de l'interpretation de Gödel à l'analyse, et son application à l'élimination des coupures dans l'analyse et la théorie des types. In Fenstad, J. E. (ed.), 2<i><sup>nd</sup> Scandinavian Logic Symp.,</i> pages 63--92. North-Holland 1971.
|
| |
7
|
{Gordon, et. al. 79} Gordon, M. J., R. Milner and C. P. Wadsworth, <i>Edinburgh LCF.</i> Lecture Notes in Computer Science, Vol. 78 Springer-Verlag 1979.
|
| |
8
|
|
| |
9
|
B Liskov , E Moss , A Snyder , R Atkinson , J C. Schaffert , T Bloom , R Scheifler, CLU reference manual, Springer-Verlag New York, Inc., New York, NY, 1984
|
 |
10
|
|
 |
11
|
|
| |
12
|
{Martin-Löf 79} Martin-Löf, P., Constructive mathematics and computer programming. 1979. Paper presented at 6<sup>th</sup> International Congress for Logic, Methodology and Philosophy of Science, Preprint, Univ. of Stockholm, Dept. of Math. 1979
|
| |
13
|
|
| |
14
|
{Milner 85} Milner, R., The standard ML core language. <i>Polymorphism</i> 2, 2 1985. 28 pages. An earlier version appeared in Proc. 1984 ACM Symp. on Lisp and Functional Programming.
|
| |
15
|
{Mitchell 84c} Mitchell, J. C., Semantic models for second-order lambda calculus. In <i>Proc. 25-th IEEE Symp. on Foundations of Computer Science,</i> 1984, pages 289--299.
|
 |
16
|
|
| |
17
|
|
| |
18
|
{Plotkin 80} Plotkin, G. D., Lambda definability in the full type hierarchy. In <i>To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism,</i> pages 363--373. Academic Press 1980.
|
| |
19
|
|
| |
20
|
{Reynolds 83} Reynolds, J. C., Types, Abstraction, and Parametric Polymorphism. In <i>IFIP Congress,</i> 1983.
|
| |
21
|
{Statman 82} Statman, R., Logical relations and the typed lambda calculus. (Manuscript.) To appear in Information and Control.
|
| |
22
|
{Tait 67} Tait, W. W., Intensional interpretation of functionals of finite type. <i>J. Symbolic Logic</i> 32 1967. pages 198--212
|
|