An algorithm for type-checking dependent types
Science of Computer Programming - Special issue on mathematics of program construction
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
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
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
Strict bidirectional type checking
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Practical refinement-type checking
Practical refinement-type checking
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Refined typechecking with Stardust
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Bidirectional Refinement Type System for LF
Electronic Notes in Theoretical Computer Science (ENTCS)
Programming with proofs and explicit contexts
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative 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
Type assignment for intersections and unions in call-by-value languages
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Elaborating intersection and union types
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Complete and easy bidirectional typechecking for higher-rank polymorphism
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Journal of Computer Security - Foundational Aspects of Security
Hi-index | 0.00 |
Bidirectional typechecking has become popular in advanced type systems because it works in many situations where inference is undecidable. In this paper, I show how to cleanly handle parametric polymorphism in a bidirectional setting. The key contribution is a bidirectional type system for a subset of ML that supports first-class (higher-rank and even impredicative) polymorphism, and is complete for predicative polymorphism (including ML-style polymorphism and higher-rank polymorphism). The system's power comes from bidirectionality combined with a "greedy" method of finding polymorphic instances inspired by Cardelli's early work on System F:. This work demonstrates that bidirectionality is a good foundation for traditionally vexing features like first-class polymorphism.