Modern type systems have come a long way since C. They’re no longer just book-keeping checks to satisfy the compiler — a good type system lets you express what your code does, what problem you’re solving, and what constraints you’re working against. But only if you know how to use it.
Kris Jenkins looks at the best of modern type systems and how to read and write them, arguing that types are a whole design language rather than a correctness tool.