Boxy types: inference for higher-rank types and impredicativity

Languages with rich type systems are beginning to employ a blend of type inference and type checking, so that the type inference engine is guided by programmer-supplied type annotations. In this paper we show, for the first time, how to combine the virtues of two well-established ideas: unification-based inference, and bidi-rectional propagation of type annotations. The result is a type system that conservatively extends Hindley-Milner, and yet supports both higher-rank types and impredicativity.

[1]  Sibylle Peuker,et al.  Halbordnungsbasierte Verfeinerung zur Verifikation verteilter Algorithmen , 2001 .

[2]  Johann Eder,et al.  Workflow recovery , 1996, Proceedings First IFCIS International Conference on Cooperative Information Systems.

[3]  Didier Rémy,et al.  Semi-Explicit First-Class Polymorphism for ML , 1999, Inf. Comput..

[4]  Wil M. P. van der Aalst,et al.  The Application of Petri Nets to Workflow Management , 1998, J. Circuits Syst. Comput..

[5]  A. Martens Verteilte Gesch?aftsprozesse-Modellierung und Verifikation mit Hilfe von Web Services , 2004 .

[6]  Martin Odersky,et al.  Colored local type inference , 2001, POPL '01.

[7]  Simon L. Peyton Jones,et al.  Scrap your boilerplate: a practical design pattern for generic programming , 2003, TLDI '03.

[8]  Nigel Perry,et al.  The Implementation of Practical Functional Programming Languages , 2005 .

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

[10]  James L. Peterson,et al.  Petri Nets , 1977, CSUR.

[11]  Peter H. Starke,et al.  Analyse von Petri-Netz-Modellen , 1990, Leitfäden und Monographien der Informatik.

[12]  W.M.P. van der Aalst,et al.  Structural characterizations of sound workflow nets , 1996 .

[13]  Benjamin C. Pierce,et al.  Local type inference , 1998, POPL '98.

[14]  Peter Lee,et al.  TIL: a type-directed, optimizing compiler for ML , 2004, SIGP.

[15]  Didier Rémy Simple, partial type-inference for System F based on type-containment , 2005, ICFP '05.

[16]  Wolfgang Reisig,et al.  Petrinetze, Eine Einführung , 1982 .

[17]  Gustavo Alonso,et al.  Concurrency control and recovery in transactional process management , 1999, PODS '99.

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

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

[20]  Karsten Schmidt,et al.  Operating Guidelines - an Alternative to Public View , 2005 .

[21]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[22]  Ralf Lämmel,et al.  Scrap your boilerplate: a practical approach to generic programming , 2003 .

[23]  Juliane Dehnert A methodology for workflow modeling: from business process modeling towards sound workflow specification , 2003 .

[24]  Mark P. Jones,et al.  First-class polymorphism with type inference , 1997, POPL '97.

[25]  Gustavo Alonso,et al.  Advanced transaction models in workflow contexts , 1996, Proceedings of the Twelfth International Conference on Data Engineering.

[26]  B. Pierce,et al.  How Good Is Local Type Inference , 1999 .

[27]  Wil M.P. van der Aalst,et al.  Three good reasons for using a Petri-net-based workflow management system , 1996 .

[28]  Xavier Leroy,et al.  Dynamics in ML , 1991, Journal of Functional Programming.

[29]  Kwangkeun Yi,et al.  Proofs about a folklore let-polymorphic type inference algorithm , 1998, TOPL.

[30]  Gustavo Alonso,et al.  Atomicity and isolation for transactional processes , 2002, TODS.

[31]  John C. Mitchell,et al.  Coercion and type inference , 1984, POPL.

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

[33]  Christos T. Karamanolis,et al.  Elements of distributed algorithms-modeling and analysis with petri nets Wolfgang Reisig [Book review] , 1999, IEE Proceedings - Software.

[34]  Simon Peyton Jones,et al.  Boxy type inference for higher-rank types and impredicativity, Technical Appendix , 2006 .

[35]  Simon L. Peyton Jones,et al.  Simple unification-based type inference for GADTs , 2006, ICFP '06.

[36]  Simon Peyton Jones,et al.  Lexically-scoped type variables , 2002 .

[37]  Chung-chieh Shan Sexy types in action , 2004, SIGP.

[38]  Daan Leijen,et al.  Qualified types for MLF , 2005, ICFP '05.

[39]  Didier Rémy,et al.  MLF: raising ML to the power of system F , 2003, ACM SIGPLAN Notices.

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

[41]  Jerzy Tiuryn,et al.  The subtyping problem for second-order types is undecidable , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[42]  Gottfried Vossen,et al.  Grundlagen der Transaktionsverarbeitung , 1993 .

[43]  Andreas Oberweis,et al.  Modellierung und Ausführung von Workflows mit Petri-Netzen , 1996, Teubner-Reihe Wirtschaftsinformatik.