ちなみに設計理念てのは、オブジェクト指向プログラミングと関数型プログラミングの統合のことね。
OCamlなんかもオブジェクト指向と関数型のハイブリッドだけど、あっちはMLライクな型システムの上に
オブジェクト指向機能を足していったものなのに対して、ScalaはJavaライクな型システムと言語仕様の
上にどのような機能を載せれば関数型プログラミングが容易にできるかを考え抜いて作られた言語だと思う。
一見色々機能があってごちゃごちゃして見えるけど、ほとんどの機能が関数型プログラミングを容易にする
ためという点で一貫している。