- Principal Type-Schemes for Functional Programs - https://doi.org/10.1145/582153.582176
- Types and Programming Languages (2002), ch. 22-24
- Implementing a Hindley–Milner Type Inference - https://smunix.github.io/dev.stephendiehl.com/fun/006_hindley_milner.html
- Typing Haskell in Haskell - https://web.cecs.pdx.edu/~mpj/pubs/thih.html
- "Typed Racket: Gradual Typing for Dynamic Languages"
- TypeScript Specification - 2–4 (structural subtyping)
- PEP 544 - Protocols: Structural subtyping in Python
- Tree-sitter docs: https://tree-sitter.github.io/tree-sitter/
- "Rust for Rustaceans"
- The Rustonomicon - 3 (Type Layout & Lifetimes)
- https://jeremymikkola.com/posts/2019_01_01_type_inference_intro.html
- MyPy design docs: https://mypy.readthedocs.io/en/stable/internal.html
- PyRight internals (analyzer.py)
- Expert F# 5.0 (Ch. 9–10).
- TypeScript Compiler (specifically
checker.ts)