ローレベルなメソッドではミュータブルに命令形的に高速に書いて、中間はイミュータブルに関数型的に書いて、その入出力をOOPでまとめるってすごくScala的だと思う