The two fundamental design considerations of a programming language are static versus dynamic typing and strong versus weak typing. Types in a programming language are checked at compile time and can be inferred by a compiler. Scala is a strong and statically typed language with a unified type system.
In static typing, a variable is bound to a particular type. In dynamic typing, the type is bound to the value instead of the ...