1994
DOI: 10.1145/186025.186031
|View full text |Cite
|
Sign up to set email alerts
|

Polymorphic type inference and abstract data types

Abstract: Many statically typed programming languages provide an abstract data type construct, such as the module in Modula-2. However, in most of these languages, implementations of abstract data types are not first-class values. Thus, they cannot be assigned to variables, passed as function parameters, or returned as function results. Several higher-order functional languages feature strong and static type systems, parametric polymorphism, algebraic data types, and explicit type variables. Most of them rely on Hindley… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

1
51
0

Year Published

1999
1999
2013
2013

Publication Types

Select...
5
3

Relationship

0
8

Authors

Journals

citations
Cited by 69 publications
(52 citation statements)
references
References 6 publications
1
51
0
Order By: Relevance
“…Note that the semantics of GADTs are such that the x on the Bind constructor is an existential type [22]: it is instantiated to a specific type when a Bind is constructed, and then inaccessibly encapsulated by the constructor until the Bind is deconstructed through case analysis.…”
Section: Embedding Javascriptmentioning
confidence: 99%
“…Note that the semantics of GADTs are such that the x on the Bind constructor is an existential type [22]: it is instantiated to a specific type when a Bind is constructed, and then inaccessibly encapsulated by the constructor until the Bind is deconstructed through case analysis.…”
Section: Embedding Javascriptmentioning
confidence: 99%
“…This point, which avoids that right-hand sides restrict the types of variables more than left-hand sides, guarantees the type preservation property (i.e., that the expression resulting after a reduction step has the same type as the original one) when applying a program rule. Moreover, this point ensures a correct management of opaque variables (López-Fraguas et al, 2010)-either introduced by the presence of existentially quantified constructors or HO-patterns-which results in the support of a particular variant of existential types (Läufer and Odersky, 1994)-see Section 5.2 for more details. Finally, the last point guarantees that free variables in the set of assumptions are not modified by neither the most general typing substitutions of both sides nor the matching substitution.…”
Section: Well-typed Programsmentioning
confidence: 99%
“…Existential types (Mitchell and Plotkin, 1988;Perry, 1991;Läufer and Odersky, 1994) appear when type variables in the type of a constructor do not occur in the final type. For example the constructor key : ∀α.α → (α → nat) → key has an existential type, since α does not appear in the final type key, i.e., it has the equivalent type (∃α.α → (α → nat)) → key.…”
Section: Existential Types Opacity and Ho-patternsmentioning
confidence: 99%
See 1 more Smart Citation
“…If the system only had existential types in the style of Läufer and Odersky [1994], then environment fragments would be of the form ∃β.Γ. For instance, imagine we have K :: ∀ᾱβ.τ 1 × · · · × τ n → ε(ᾱ).…”
Section: Typing Judgmentsmentioning
confidence: 99%