Language Design - Typechecker Zoo
Our System Fω implementation employs a two-layer architecture that separates user-facing syntax from the internal representation used by the type checker. This design pattern, common in compilers, allows us to provide an ergonomic programming experience while maintaining a clean theoretical foundation for type checking algorithms. The surface language offers familiar syntax with algebraic data types, pattern matching, and implicit type inference. The core language provides an explicit representation of System Fω with kinds, type abstractions, and applications. Translation between these layers handles the complex process of inserting implicit type arguments and managing the type-level computations that System Fω enables. Before diving into our clean System Fω design, we must acknowledge the elephant in the room: Haskell, the language that wore the hairshirt for two decades and somehow convinced a generation of programmers that this constituted virtue. Our implementation deliberately avo
Language Design - Typechecker Zoo Keyboard shortcuts Press ← or → to navigate between chapters Press S or / to search in the book Press ? to show this help Press Esc to hide this help Auto Light Rust Coal Navy Ayu Typechecker Zoo Language Design Our System Fω implementation employs a two-layer architecture that separates user-facing syntax from the internal representation used by the type checker. This design pattern, common in compilers, allows us to provide an ergonomic programming experience while maintaining a clean theoretical foundation for type checking algorithms. The surface language
Explore this link on the map →related reading
- Type system - Wikipediaen.wikipedia.org
- Type theory - Wikipediaen.wikipedia.org
- Lambda calculus - Wikipediaen.wikipedia.org
- Reading 19: Little Languagesweb.mit.edu
- Hazel, a live functional programming environment featuring typed holes.hazel.org
- adventures in uncertainty: An Introduction to Recursion Schemesblog.sumtypeofway.com
- Effect system - Wikipediaen.wikipedia.org
- Pyrefly vs. ty: Comparing Python’s Two New Rust-Based Type Checkers | Edward Li's Blogblog.edward-li.com
- No, dynamic type systems are not inherently more openlexi-lambda.github.io
- "Why don't you use dependent types?"lawrencecpaulson.github.io
- A Lean Syntax Primer — overreactedoverreacted.io
- Parse, don’t validatelexi-lambda.github.io