scala: Implementiere eine generische rekursive max-Funktion

9

Ich versuche, diese Haskell Max Funktion Implementierung zu scala

zu portieren %Vor%

Dies ist mein erster Versuch:

%Vor%

Aber ich bekomme den folgenden Fehler:

%Vor%

Ich habe versucht, mit Bestellung, Comprable, etc. mit ähnlichen Ergebnissen ...

Irgendeine Idee darüber, was fehlt?

    
opensas 20.09.2012, 05:55
quelle

5 Antworten

14

Vielleicht möchten Sie die Klasse Ordering type?

%Vor%

Dies ist die Methode, mit der die integrierte Methode max funktioniert:

%Vor%

Sie können Dinge sehr viel aufräumen, wenn Sie dies tun:

%Vor%

Oder Sie können es tail-recursive für erhöhte Effizienz machen (weil der Compiler es optimieren wird):

%Vor%

Außerdem sollten Sie RuntimeException oder eine Unterklasse davon ausgeben, nicht Error .

    
dhg 20.09.2012, 05:58
quelle
17

Ging durch eine ähnliche Übung wie die OPs ohne Mustervergleich und generische Typen und kam zu folgendem Ergebnis:

%Vor%     
dejon97 26.04.2014 18:34
quelle
5

Ich habe gerade diese Lösung gefunden.

%Vor%     
eomeroff 30.03.2013 00:10
quelle
1

Ich habe eine einfache Lösung gefunden, die einfach zu verstehen ist. Es bietet eine leere Liste, eine Liste mit nur einem Element und negative Zahlen.

%Vor%     
Hegemon 07.11.2013 14:00
quelle
0

Hoppla, sollte besser aussehen, bevor Sie

fragen

Ich habe die Antwort in diesem Thread gefunden: Ссылка

Es scheint, als ob Haskells Typklassen unter Verwendung von implicits in scala (wie im Beispiel von dhg) implementiert sind.

es endet so:

%Vor%

oder mit etwas syntaktischem Zucker, nur

%Vor%

Trotzdem denke ich, dass der Compiler genug Informationen hat, um es selbst zu machen ...

ps: Ich habe ein bisschen die Funktion verschönert ...

    
opensas 20.09.2012 06:04
quelle

Tags und Links