Affiliation:
1. Queen’s University, Canada
2. University of Cambridge, United Kingdom
Abstract
Bidirectional typing combines two modes of typing: type checking, which checks that a program satisfies a known type, and type synthesis, which determines a type from the program. Using checking enables bidirectional typing to support features for which inference is undecidable; using synthesis enables bidirectional typing to avoid the large annotation burden of explicitly typed languages. In addition, bidirectional typing improves error locality. We highlight the design principles that underlie bidirectional type systems, survey the development of bidirectional typing from the prehistoric period before Pierce and Turner’s local type inference to the present day, and provide guidance for future investigations.
Funder
Natural Sciences and Engineering Research Council of Canada
Publisher
Association for Computing Machinery (ACM)
Subject
General Computer Science,Theoretical Computer Science
Cited by
19 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. When Subtyping Constraints Liberate: A Novel Type Inference Approach for First-Class Polymorphism;Proceedings of the ACM on Programming Languages;2024-01-05
2. Focusing on Refinement Typing;ACM Transactions on Programming Languages and Systems;2023-12-20
3. Graph IRs for Impure Higher-Order Languages: Making Aggressive Optimizations Affordable with Precise Effect Dependencies;Proceedings of the ACM on Programming Languages;2023-10-16
4. A Dependently Typed Language with Dynamic Equality;Proceedings of the 8th ACM SIGPLAN International Workshop on Type-Driven Development;2023-08-30
5. Special Delivery: Programming with Mailbox Types;Proceedings of the ACM on Programming Languages;2023-08-30