A static type system needs to decide if its goals are documentation, safety, performance, or IDEs. The implementation will depend on this.
Related Posts
Really cute approach to reporting type errors: when there's a type error, show an example of a runtime error that the type check has prevented!
Data-Driven Techniques for Type Error Diagnosis https://escholarship.org/uc/item/59s4h4pv
I'm designing a programming language and trying to decide the type of `let x = 1;`. Should it be Unit or Int?
Advantage of Int: really convenient when evaluating snippets in a REPL.
Advantage of Unit: It's much less confusing when type inference runs on an incomplete function.
What are the most popular languages that have used an AST walker for their implementation?
I know Ruby used to do this, but there must be others.
(I'm interested in the lowest PL speed that users will tolerate if you have awesome features.)