Enforcement of type rules at compile time rather than at run time. Static typing catches more errors at compile time than dynamic typing. Ada, C, C++, Haskell, Java, and ML are examples of statically typed languages. Statically typed languages may have strong typing or weak typing.