A static type system needs to decide if its goals are documentation, safety, performance, or IDEs. The implementation will depend on this.