Jordan Eldredge

Type systems as a mental tool

One of the superpowers of a type system is providing language (well defined mental constructs) for formally designing your APIs.

This mental tool lets you to think in a higher abstraction: the conceptual execution of your program separated from its concrete implementation.

This invariably leads to better code modularity.