sto cercando di porto questo Haskell implementazione max funzione per Scalascala: implementare una generica funzione di max ricorsiva
maximum' :: (Ord a) => [a] -> a
maximum' [] = error "maximum of empty list"
maximum' [x] = x
maximum' (x:xs) = max x (maximum' xs)
Questo è il mio primo tentativo:
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))
ma ottengo il seguente errore :
inferred type arguments [Int] do not conform to method max's type parameter bounds [T <: Ordered[T]]
ho provato con l'ordinazione, comprable, ecc con risultati simili ...
012.Qualche idea su cosa manca?
+1 per avere uno sguardo alla fonte ...(Non ho ancora abbastanza coraggio ... uso la fonte !!!) – opensas
Immagino che usare ord.max sia come imbrogliare, lo sto facendo solo per scopi didattici ... comunque, ho creato un helper maxElement funzione per evitare che val in là ... – opensas
'ord.max' è diverso da' List.max'. Uno è fondamentalmente un operatore che confronta due cose mentre l'altro è un metodo di un'intera collezione. Hanno solo lo stesso nome. – dhg