この haskell max 関数の実装を scala に移植しようとしています
maximum' :: (Ord a) => [a] -> a
maximum' [] = error "maximum of empty list"
maximum' [x] = x
maximum' (x:xs) = max x (maximum' xs)
これは私の最初の試みです:
def max[T <: Ordered[T]](list: List[T]): T = list match {
case Nil => throw new Error("maximum of empty list")
case head :: Nil => head
case list => {
val maxTail = max(list.tail)
if (list.head > maxTail) list.head else maxTail
}
}
max(List[Int](3,4))
しかし、次のエラーが表示されます。
inferred type arguments [Int] do not conform to method max's type parameter bounds [T <: Ordered[T]]
同様の結果で、順序付け、比較可能などで試しました...
何が欠けているかについて何か考えはありますか?