Article URL: https://intertwingly.net/blog/2026/04/28/Untyped-on-Purpose.html Comments URL: https://news.ycombinator.com/item?id=47941890 Points: 1 # Comments: 0
Article URL: https://intertwingly.net/blog/2026/04/28/Untyped-on-Purpose.html
Comments URL: https://news.ycombinator.com/item?id=47941890
Most type systems force a bet. Programmers pay in annotations; compilers pay in inference effort; the language designer picks where to set the dial. Today Roundhouse declined to set it.
Hindley-Milner — the algorithm behind ML, OCaml, and Haskell's core — is the gold standard for principal-type inference. Within its expressible subset (parametric polymorphism, no subtyping, no unions), it produces a most-general type for every expression with no annotations and a guarantee of termination. That's the Goldilocks zone.
Step outside it and the floor drops. Subtyping, intersections, higher-rank polymorphism — all push inference into undecidable territory. You can have more expressive or you can have fully inferred ; the literature has spent forty years showing you mostly can't have both.
Real languages settle. Rust demands type signatures on function parameters — annotations are the price of staying tractable past HM. TypeScript and Python infer locally and lean on annotations at boundaries. Crystal runs whole-program propagation that's theoretically undecidable but terminates fast enough on real code, and the user pays the bill in compile time. Each language picked a point.
Today Roundhouse landed Ty::Untyped as a first-class type — not an error state, not a sentinel, not a metavariable. A type the analyzer can assign and every downstream stage can consume.
The idea isn't novel. RBS , Ruby's official type-signature language, has untyped as the gradual escape. TypeScript's any does the same job. Sorbet calls it T.untyped . Hack distinguishes dynamic from mixed , and that split matches one we made independently. We're not inventing the gradual hatch; we're making it the IR's load-bearing primitive instead of a user annotation.