|
Frankly, each of your three paragraphs seems unrelated to each other, so I'm still not sure what your argument is. 1) Not type checking at runtime is exactly what people mean by static typing, because the definition of static typing means the checks are done before execution. 2) This does not make it harder to optimize, on the contrary if they generated type assertions it would considerable slow things down on the boundary of typed and untyped code. 3) C++, Go, Rust, Haskell they are fully statically typed, the only difference is they support varying levels type-inference which means you don't need to "type out the type" but it's really orthogonal to the whole optional/static/dynamic typing issue. |