Extending ML with Semi-Explicit Higher-Order Polymorphism

We propose a modest conservative extension to ML that allows semi-explicit higher-order polymorphism while preserving the essential properties of ML. In our proposal, the introduction of polymorphic types remains fully explicit, that is, both the introduction and the exact polymorphic type must be specified. However, the elimination of polymorphic types is now semi-implicit: only the elimination itself must be specified as the polymorphic type is inferred. This extension is particularly useful in Objective ML where polymorphism replaces subtyping.

[1]  OderskyMartin,et al.  Polymorphic type inference and abstract data types , 1994 .

[2]  Didier Rémy,et al.  Objective ML: a simple object-oriented extension of ML , 1997, POPL '97.

[3]  Assaf J. Kfoury,et al.  A direct algorithm for type inference in the rank-2 fragment of the second-order λ-calculus , 1994, LFP '94.

[4]  A. J. Kfoury,et al.  A Direct Algorithm for Type Inference in the Rank 2 Fragment of the Second-Order -Calculus , 1993 .

[5]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[6]  Martin Odersky,et al.  Putting type annotations to work , 1996, POPL '96.

[7]  Didier Rémy,et al.  Programming Objects with ML-ART, an Extension to ML with Abstract and Record Types , 1994, TACS.

[8]  J. B. Wells,et al.  Typability and type checking in the second-order /spl lambda/-calculus are equivalent and undecidable , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[9]  John C. Mitchell,et al.  Polymorphic Type Inference and Containment , 1988, Inf. Comput..

[10]  Frank Pfenning,et al.  On the Undecidability of Partial Polymorphic Type Reconstruction , 1993, Fundam. Informaticae.

[11]  J. B. Wells Typability and type checking in the second-order Λ-calculus are equivalent and undecidable (Preliminary Draft) , 1993 .

[12]  Martin Odersky,et al.  Polymorphic type inference and abstract data types , 1994, TOPL.

[13]  Frank Pfenning,et al.  Partial polymorphic type inference and higher-order unification , 1988, LISP and Functional Programming.

[14]  Xavier Leroy,et al.  Dynamics in ML , 1991, FPCA.

[15]  Claude Kirchner,et al.  Solving Equations in Abstract Algebras: A Rule-Based Survey of Unification , 1991, Computational Logic - Essays in Honor of Alan Robinson.

[16]  A. K. Wmght Polymorphism for imperative languages without imperative types , 1993 .