Polymorphic type inference and containment
Information and Computation - Semantics of Data Types
Unification under a mixed prefix
Journal of Symbolic Computation
An algorithm for type-checking dependent types
Science of Computer Programming - Special issue on mathematics of program construction
Putting type annotations to work
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Intersection types and computational effects
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polymorphic Subtyping Without Distributivity
MFCS '98 Proceedings of the 23rd International Symposium on Mathematical Foundations of Computer Science
The Subtyping Problem for Second-Order Types is Undecidable
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Dependent types in practical programming
Dependent types in practical programming
MLF: raising ML to the power of system F
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Strict bidirectional type checking
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Boxy types: inference for higher-rank types and impredicativity
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Lost in translation: formalizing proposed extensions to c#
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPH: first-class polymorphism for Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Verifying a Semantic βη-Conversion Test for Martin-Löf Type Theory
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Flexible types: robust type inference for first-class polymorphism
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Information and Computation
Greedy bidirectional polymorphism
Proceedings of the 2009 ACM SIGPLAN workshop on ML
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Refinement types for logical frameworks
Refinement types for logical frameworks
Hi-index | 0.00 |
Bidirectional typechecking, in which terms either synthesize a type or are checked against a known type, has become popular for its scalability (unlike Damas-Milner type inference, bidirectional typing remains decidable even for very expressive type systems), its error reporting, and its relative ease of implementation. Following design principles from proof theory, bidirectional typing can be applied to many type constructs. The principles underlying a bidirectional approach to polymorphism, however, are less obvious. We give a declarative, bidirectional account of higher-rank polymorphism, grounded in proof theory; this calculus enjoys many properties such as eta-reduction and predictability of annotations. We give an algorithm for implementing the declarative system; our algorithm is remarkably simple and well-behaved, despite being both sound and complete.