今回は時間がないので簡単に見ます。 型クラスによってアドホック多相が実現されるとどんな柔軟なことができるのかという例を見ましょう。 たとえば、List#max について見て見ましょう。これ、要素が String だったら辞書順での最大値を返すし、Int だったら数的な意味での最大値を返しますよね。もし「そもそも比べられない型」が要素に入ってたらコンパイルエラーになります。 class Nyan(val value: String) //比べることのできない型 println(List(1, 2, 3).max) // => 3 println(List("a", "b", "c").max) // => c println(List(new Nyan("a"), new Nyan("b"), new Nyan("c")).max) // => error:No implicit Order