Type inference with polymorphic recursion

The Damas-Milner Calculus is the typed λ-calculus underlying the type system for ML and several other strongly typed polymorphic functional languages such as Miranda and Haskell. Mycroft has extended its problematic monomorphic typing rule for recursive definitions with a polymorphic typing rule. He proved the resulting type system, which we call the Milner-Mycroft Calculus, sound with respect to Milner's semantics, and showed that it preserves the principal typing property of the Damas-Milner Calculus. The extension is of practical significance in typed logic programming languages and, more generally, in any language with (mutually) recursive definitions

[1]  Daniel Leivant,et al.  Polymorphic type inference , 1983, POPL '83.

[2]  Harry G. Mairson,et al.  Unification and ML-Type Reconstruction , 1991, Computational Logic - Essays in Honor of Alan Robinson.

[3]  Alan Mycroft,et al.  A Polymorphic Type System for Prolog , 1984, Logic Programming Workshop.

[4]  Alberto Martelli,et al.  An Efficient Unification Algorithm , 1982, TOPL.

[5]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[6]  Steven Pemberton,et al.  ABC programmer's handbook , 1990 .

[7]  Paliath Narendran,et al.  Semi-Unification , 1991, Theor. Comput. Sci..

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

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

[10]  Paola Giannini,et al.  Characterization of typings in polymorphic type discipline , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[11]  H. B. Curry Modified basic functionality in combinatory logic , 1969 .

[12]  Pavel Pudlák,et al.  On a unification problem related to Kreisel's conjecture , 1988 .

[13]  C. K. R. T. Jones,et al.  The ϱ-Calculus , 1981, Math. Log. Q..

[14]  Mike Paterson,et al.  Linear Unification , 1978, J. Comput. Syst. Sci..

[15]  Dominique Clément,et al.  A simple applicative language: mini-ML , 1986, LFP '86.

[16]  Jochen Dörre,et al.  On subsumption and semiunification in feature algebras , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[17]  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 .

[18]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[19]  Philip K. Hooper The undecidability of the Turing machine immortality problem , 1966, Journal of Symbolic Logic.

[20]  Jerzy Tiuryn,et al.  The undecidability of the semi-unification problem , 1990, STOC '90.

[21]  H. B. Curry,et al.  Combinatory Logic, Volume I. , 1961 .

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

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

[24]  Fritz Henglein,et al.  Fast Left-Linear Semi-Unification , 1991, ICCI.

[25]  Jacques Herbrand Recherches sur la théorie de la démonstration , 1930 .

[26]  Mitchell Wand Finding the source of type errors , 1986, POPL '86.

[27]  Gerard Huet,et al.  Conflunt reductions: Abstract properties and applications to term rewriting systems , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[28]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[29]  Jerzy Tiuryn,et al.  A proper extension of ML with an effective type-assignment , 1988, POPL '88.

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

[31]  James H. Morris,et al.  Lambda-calculus models of programming languages. , 1969 .

[32]  Fritz Henglein,et al.  Type inference and semi-unification , 1988, LISP and Functional Programming.

[33]  Elmar Eder Properties of Substitutions and Unifications , 1983, GWAI.

[34]  John C. Mitchell,et al.  Polymorphic unification and ML typing , 1989, POPL '89.

[35]  Hans Leiß,et al.  On Type Inference for Object-Oriented Programming Languages , 1987, CSL.

[36]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.

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

[38]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

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

[40]  Lambert G. L. T. Meertens,et al.  Incremental polymorphic type checking in B , 1983, POPL '83.

[41]  John C. Mitchell,et al.  Type Systems for Programming Languages , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[42]  Michael J. Maher,et al.  Unification Revisited , 1988, Foundations of Deductive Databases and Logic Programming..

[43]  Hans-Juergen Boehm Type inference in the presence of type abstraction , 1989, PLDI '89.

[44]  Fritz Henglein,et al.  A Decidable Case of the Semi-Unification Problem , 1991, MFCS.

[45]  John C. Mitchell,et al.  On the Sequential Nature of Unification , 1984, J. Log. Program..

[46]  Paul Walton Purdom,et al.  Detecting Looping Simplifications , 1987, RTA.

[47]  Gregory F. Johnson,et al.  A maximum-flow approach to anomaly isolation in unification-based incremental type inference , 1986, POPL '86.

[48]  Alan Mycroft,et al.  Polymorphic Type Schemes and Recursive Definitions , 1984, Symposium on Programming.

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

[50]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[51]  Harry G. Mairson,et al.  The Complexity of Type Inference for Higher-Order Typed lambda Calculi , 1994, J. Funct. Program..

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

[53]  Jerzy Tiuryn,et al.  Type reconstruction in finite-rank fragments of the polymorphic lambda -calculus , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[54]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[55]  Luís Damas Type assignment in programming languages , 1984 .

[56]  Jerzy Tiuryn,et al.  Computational consequences and partial solutions of a generalized unification problem , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[57]  Harry G. Mairson Deciding ML typability is complete for deterministic exponential time , 1989, POPL '90.

[58]  David Turner An overview of Miranda , 1986, SIGP.

[59]  J. Girard,et al.  Proofs and types , 1989 .

[60]  J. Roger Hindley,et al.  Introduction to combinators and λ-calculus , 1986, Acta Applicandae Mathematicae.

[61]  Jerzy Tiuryn,et al.  ML Typability is DEXTIME-Complete , 1990, CAAP.

[62]  Harry G. Mairson,et al.  The complexity of type inference for higher-order lambda calculi , 1991, POPL '91.