What are principal typings and what are they good for?

We demonstrate the pragmatic value of the principal typing property, a property distinct from ML's principal type property, by studying a type system with principal typings. The type system is based on rank 2 intersection types and is closely related to ML. Its principal typing property provides elegant support for separate compilation, including "smartest recompilation" and incremental type inference. Moreover, it motivates a new rule for typing recursive definitions that can type some interesting examples of polymorphic recursion.

[1]  Mariangiola Dezani-Ciancaglini,et al.  A filter lambda model and the completeness of type assignment , 1983, Journal of Symbolic Logic.

[2]  Jerzy Tiuryn,et al.  Type reconstruction in the presence of polymorphic recursion , 1993, TOPL.

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

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

[5]  Nancy McCracken,et al.  The Typechecking of Programs with Implicit Type Structure , 1984, Semantics of Data Types.

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

[7]  Scott F. Smith,et al.  Type inference for recursively constrained types and its application to OOP , 1995, MFPS.

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

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

[10]  Geoffrey Smith,et al.  Principal Type Schemes for Functional Programs with Overloading and Subtyping , 1994, Sci. Comput. Program..

[11]  Mario Coppo,et al.  Type Inference with Recursive Types: Syntax and Semantics , 1991, Inf. Comput..

[12]  S. V. Bakel,et al.  Intersection type disciplines in Lambda Calculus and applicative term rewriting systems , 1993 .

[13]  Rishiyur S. Nikhil,et al.  Incremental Polymorphism , 1991, FPCA.

[14]  Alexander Aiken,et al.  Type inclusion constraints and type inference , 1993, FPCA '93.

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

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

[17]  Monika Henzinger,et al.  Fully dynamic biconnectivity and transitive closure , 1995, Proceedings of IEEE 36th Annual Foundations of Computer Science.

[18]  Alberto Marchetti-Spaccamela,et al.  On-line Graph Algorithms for Incremental Compilation , 1993, WG.

[19]  Luca Cardelli,et al.  Subtyping recursive types , 1991, POPL '91.

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

[21]  Stefan Kaes Type inference in the presence of overloading, subtyping and recursive types , 1992, LFP '92.

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

[23]  Hirofumi Yokouchi,et al.  Embedding a Second Order Type System into an Intersection Type System , 1995, Inf. Comput..

[24]  S. A. Gupta AN INCREMENTAL TYPE INFERENCE SYSTEM FOR THE PROGRAMMING LANGUAGE ID , 1990 .

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

[26]  John C. Mitchell,et al.  Type inference with simple subtypes , 1991, Journal of Functional Programming.

[27]  Jerzy Tiuryn,et al.  An analysis of ML typability , 1994, JACM.

[28]  Fritz Henglein,et al.  Type inference with polymorphic recursion , 1993, TOPL.

[29]  Jerzy Tiuryn,et al.  Type Reconstruction in Finite Rank Fragments of the Second-Order lambda-Calculus , 1992, Inf. Comput..

[30]  Luca Cardelli,et al.  Subtyping recursive types , 1993 .

[31]  Simon L. Peyton Jones,et al.  Lazy functional state threads , 1994, PLDI '94.

[32]  T. Jim Rank 2 Type Systems and Recursive Definitions , 1995 .