続ジェネリックなmax

可変長版。

scala> def max[T <% Ordered[T]](elements: T*): T = elements toList match {
     |   case List(x) => x
     |   case x :: rest =>
     |     val maxRest = max(rest: _*)
     |     if (x > maxRest) x else maxRest
     | }
max: [T](T*)(implicit (T) => Ordered[T])T

scala> max(1, 45, 22, 9)
res0: Int = 45

scala> max(List(1, 45, 22, 9): _*)
res4: Int = 45

関数型もっと勉強しよう。