types are a compile-time proof of behavior, so the stronger the type system, the more guarantees the proof gives.