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
30 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Same Same but Different: A Comparative Analysis of Static Type Checkers in Erlang;Proceedings of the 23rd ACM SIGPLAN International Workshop on Erlang;2024-08-28
2. Contextual Typing;Proceedings of the ACM on Programming Languages;2024-08-15
3. A HAT Trick: Automatically Verifying Representation Invariants using Symbolic Finite Automata;Proceedings of the ACM on Programming Languages;2024-06-20
4. eCC++ : A Compiler Construction Framework for Embedded Domain-Specific Languages;2024 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW);2024-05-27
5. Martin-Löf à la Coq;Proceedings of the 13th ACM SIGPLAN International Conference on Certified Programs and Proofs;2024-01-09