February 1, 2026
Meta all the way down
Typechecking is undecidable when 'type' is a type (1989) [pdf]
When code labels itself, chaos — paradox jokes, 403 woes, and big language dreams
TLDR: An MIT paper says that when a language lets types describe themselves and depend on values, you can’t always check them automatically. Commenters split between “of course, it’s paradox land,” bold “build it anyway” optimism, and jokes about 403 errors and job‑search chaos—because self‑referential systems are messy and important.
The internet rediscovered a 1989 MIT report claiming that if a programming language lets “Type” be a type (aka, types can talk about themselves) and those types depend on values, then you can’t build a tool that always decides if code is correctly labeled. Translation: super‑powerful, super‑tricky. Cue the comment drama. One camp went full philosophy: Animats pointed straight at Russell’s paradox, asking if this is “the class of all classes” situation. Another camp shrugged: moomin said this was unsurprising, invoking Gödel’s and halting theorem vibes—any system that describes itself eventually trips over a paradox. Meanwhile, randomNumber7 refused to be discouraged, arguing this could still be the basis for a powerful language, because who doesn’t want code that understands itself? Then came the comedy: cwmoore compared it to “finding Title Search companies on Indeed,” because even hiring websites can’t typecheck reality. And marcosdumay brought the meta‑drama, getting a 403 Forbidden trying to open the pdf and asking if it’s down—perfect irony for a paper about things you can’t decide. The result: a perfect storm of math‑nerd flexes, practical optimism, and memes about broken links, all orbiting a simple truth—self‑referential systems are wild, and the internet loves watching them burn and/or build.
Key Points
- •The report studies dependent function types (Πx:A.B), where result types depend on argument values.
- •It illustrates dependent typing via an example function returning an n-length zero vector, motivating type constructors.
- •The language considered treats ‘Type’ as the type of all types, including itself, within a typed lambda-calculus.
- •By reconstructing Girard’s paradox, the report argues that no effective typechecking algorithm can exist for such a language.
- •The work connects to polymorphism, propositions-as-types, intuitionistic logic, and broader type theory contexts.