From Hindley-Milner Types to First-Class Structures

We describe extensions of the Hindley-Milner type system to support higher-order polymorphism and first-class structures with polymorphic components. The combination of these features results in a ‘core language’ that rivals the expressiveness of the Standard ML module system in some respects and exceeds it in others.

[1]  Andrew W. Appel,et al.  Separate compilation for Standard ML , 1994, PLDI '94.

[2]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[3]  Atsushi Ohori,et al.  A compilation method for ML-style polymorphic record calculi , 1992, POPL '92.

[4]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[5]  Mads Tofte,et al.  A Semantics for Higher-Order Functors , 1994, ESOP.

[6]  John C. Mitchell,et al.  The essence of ML , 1988, POPL '88.

[7]  J. Girard Une Extension De ĽInterpretation De Gödel a ĽAnalyse, Et Son Application a ĽElimination Des Coupures Dans ĽAnalyse Et La Theorie Des Types , 1971 .

[8]  John C. Mitchell On Abstraction and the Expressive Power of Programming Languages , 1991, Sci. Comput. Program..

[9]  David B. MacQueen Using dependent types to express modular structure , 1986, POPL '86.

[10]  Andrew W. Appel,et al.  Smartest recompilation , 1993, POPL '93.

[11]  Xavier Leroy,et al.  A syntactic theory of type generativity and sharing , 1996, Journal of Functional Programming.

[12]  Per Martin-Löf,et al.  Constructive mathematics and computer programming , 1984 .

[13]  H. P. Barendregt Introduction to generalised type systems, invited talk , 1989 .

[14]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[15]  John C. Mitchell,et al.  An extension of standard ML modules with subtyping and inheritance , 1991, POPL '91.

[16]  Mark P. Jones Qualified Types: Theory and Practice , 1994 .

[17]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[18]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[19]  Eugenio Moggi,et al.  A category-theoretic account of program modules , 1989, Mathematical Structures in Computer Science.

[20]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[21]  P. Martin-Lof,et al.  Constructive mathematics and computer programming , 1984, Philosophical Transactions of the Royal Society of London. Series A, Mathematical and Physical Sciences.

[22]  Xavier Leroy,et al.  Manifest types, modules, and separate compilation , 1994, POPL '94.

[23]  Mads Tofte,et al.  Principal signatures for higher-order program modules , 1992, POPL '92.

[24]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

[25]  Mark P. Jones A system of constructor classes: overloading and implicit higher-order polymorphism , 1993, FPCA '93.

[26]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[27]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[28]  Robin Milner,et al.  Definition of standard ML , 1990 .

[29]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[30]  Maria-Virginia Aponte Extending record typing to type parametric modules with sharing , 1993, POPL '93.

[31]  Jean-Yves Girard,et al.  The system f of variable types, 15 years later , 1990 .

[32]  Peter Lee,et al.  Signatures for a network protocol stack: a systems application of Standard ML , 1994, LFP '94.

[33]  T Bell,et al.  An Implementation of Higher-Order FunctorsPierre Cr , 1994 .

[34]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[35]  John C. Mitchell,et al.  Higher-order modules and the phase distinction , 1989, POPL '90.

[36]  Stefan Kahrs,et al.  First-Class Polymorphism for ML , 1994, ESOP.

[37]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[38]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[39]  Hendrik Pieter Barendregt,et al.  Introduction to generalized type systems , 1991, Journal of Functional Programming.

[40]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[41]  Mark Lillibridge,et al.  A type-theoretic approach to higher-order modules with sharing , 1994, POPL '94.

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

[43]  Luca Cardelli,et al.  Abstract Types and the Dot Notation , 1990, Programming Concepts and Methods.

[44]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .