Guarded algebraic data types, which subsume the concepts known in the literature as indexed types, guarded recursive datatype constructors, and phantom types, and are closely related to inductive types, have the distinguishing feature that, when typechecking a function defined by cases, every branch must be checked under di#erent typing assumptions. This mechanism allows exploiting the presence of dynamic tests in the code to produce extra static type information. We propose an extension of the constraint-based type system HM(X) with pattern matching, guarded algebraic data types, and polymorphic recursion. After establishing a type safety theorem, we show that, up to a few mandatory type annotations, type inference may be reduced to constraint solving. We devote particular attention to keeping the amount of user-supplied type information to a minimum and to ensuring that the generated constraints are e#ciently tractable. To the best of our knowledge, this is the first generic and comprehensive account of type inference in the presence of guarded algebraic data types.
|
845
|
A theory of type polymorphism in programming
– Milner
- 1978
|
|
782
|
A machine-oriented logic based on the resolution principle
– Robinson
- 1965
|
|
426
|
A syntactic approach to type soundness
– Wright, Felleisen
- 1994
|
|
290
|
How to make ad-hoc polymorphism less ad hoc
– Wadler, Blott
- 1989
|
|
239
|
Dependent Types in Practical Programming
– Xi, Pfenning
- 1999
|
|
226
|
Unification Revisited
– Lassez, Maher, et al.
- 1988
|
|
174
|
Solving equations in abstract algebras: a rule-based survey of unification
– Jouannaud, Kirchner
- 1991
|
|
136
|
Type inference with polymorphic recursion
– Henglein
- 1993
|
|
133
|
Refinement types for ML
– Freeman, Pfenning
- 1991
|
|
132
|
Inductive definitions in the system Coq: Rules and properties
– Paulin-Mohring
- 1993
|
|
131
|
Information flow inference for ML
– Pottier, Simonet
- 2002
|
|
121
|
Local type inference
– Pierce, Turner
- 1998
|
|
120
|
Intensional polymorphism in type-erasure semantics
– Crary, Weirich, et al.
- 1998
|
|
118
|
The principal type-scheme of an object in combinatory logic
– Hindley
- 1969
|
|
94
|
Putting type annotations to work
– Odersky, Laufer
- 1996
|
|
83
|
Guarded Recursive Datatype Constructors
– Xi, Chen, et al.
- 2003
|
|
71
|
Subtyping constrained types
– Trifonov, Smith
- 1996
|
|
70
|
Type inference with constrained types. Theory and Practice of Object Systems
– Odersky, Sulzmann, et al.
- 1999
|
|
62
|
First-class phantom types
– Cheney, Hinze
- 2003
|
|
55
|
Polymorphic type inference and abstract data types
– Laufer, Odersky
- 1994
|
|
43
|
Mostly-Static Decentralized Information Flow Control
– Myers
- 1999
|
|
41
|
Une Théorie des Constructions Inductives
– Werner
- 1994
|
|
33
|
Run-time principals in information-flow type systems
– Tse, Zdancewic
- 2004
|
|
31
|
Indexed types
– Zenger
- 1997
|
|
30
|
The Objective Caml system
– Leroy
- 2004
|
|
30
|
Functional Unparsing
– Danvy
- 1998
|
|
27
|
A general framework for Hindley/Milner type systems with constraints
– Sulzmann
- 2000
|
|
26
|
Type-safe cast: Functional pearl
– Weirich
- 2000
|
|
25
|
Structural subtyping of non-recursive types is decidable
– Kuncak, Rinard
- 2003
|
|
24
|
An improved lower bound for the elementary theories of trees
– Vorobyov
- 1996
|
|
23
|
Indizierte Typen
– Zenger
- 1998
|
|
22
|
Dead code elimination through dependent types
– Xi
- 1999
|
|
22
|
Dynamic security labels and noninterference
– Zheng, Myers
- 2004
|
|
15
|
The Flow Caml System: documentation and user’s manual
– Simonet
- 2003
|
|
14
|
Hindley/Milner style type systems in constraint form
– Sulzmann, Muller, et al.
- 1999
|
|
13
|
From Hindley-Milner types to first-class structures
– Jones
- 1995
|
|
13
|
Polymorphic Typed Defunctionalization
– Pottier, Gauthier
- 2004
|
|
11
|
Type inference with structural subtyping: a faithful formalization of an efficient constraint solver
– Simonet
- 2003
|
|
10
|
Résolution d’équations dans des langages d’ordre
– Huet
- 1976
|
|
10
|
Applied type system
– Xi
- 2004
|
|
9
|
A semi-syntactic soundness proof for HM(X
– Pottier
- 2001
|
|
8
|
An extension of HM(X) with bounded existential and universal data-types
– Simonet
- 2003
|
|
8
|
Dependently typed pattern matching
– Xi
- 2003
|
|
4
|
Programming objects with ML-ART: An extension to ML with abstract and record types
– emy, D
- 1994
|
|
1
|
Phantom types. Manuscript. URL: http://www.informatik.uni-bonn.de/ ~ralf/publications/Phantom.ps.gz
– Cheney, Hinze
- 2003
|
|
1
|
Dependent ML. URL: http://www.cs.bu.edu/ ~hwxi/DML/DML.html
– Xi
|
|
1
|
Guarded recursive datatype constructors. URL: http://www.cs.bu. edu/fac/hwxi/GRecTypecon/PAPER/main.pdf
– Xi, Chen, et al.
- 2002
|
|
1
|
Polymorphic type inference and abstract data types
– aufer, K, et al.
- 1994
|
|
1
|
The essence of ML type inference. Draft manuscript
– Pottier, emy, et al.
- 2003
|
|
1
|
Month Year. Constraint-Based Type Inference for Guarded Algebraic Data Types Simonet, V. 2003a. An extension of HM(X) with bounded existential and universal data-types
– TBD
|