ich habe folgendes Problem. Ich will die größte von 3 (oder mehr) Zahlen bestimmen. Wie kann ich dafür sorgen, dass Haskell einen weiteren vergleich durchführt?
Wenn ich ausführe und z die größte, x aber größer als y ist wird trotzdem x ausgegeben weil das ja gleich zutrifft.
Ich bin blutiger Anfänger und habe zuvor nur ein klein wenig in Java rum gespielt. In java hätte ich das mit dem logischen "und" verknüpft.
@gaganaut: Das würde man normalerweise mit einer Max-Funktion lösen die zwei Argumente bekommt und das grössere von beiden zurück gibt. Wenn Du das mit „guards” (``|``) lösen willst, dann müsstest Du tatsächlich alle Bedingungen komplett ausformulieren. Ein logisches „und” gibt es in Haskell natürlich auch. Hat den gleichen Namen wie in Java.
@gaganaut: Zusammenfassend: Du kannst mit Guards alle Möglichkeiten hinschreiben und da dann halt die „Und”-Verknüpfung verwenden, oder Du kannst `max` benutzen, oder Du kannst `maximum` benutzen. Um Deine eigene `max3`-Funktion zu schreiben. Sind das nicht genug Alternativen!?
Wie gesagt Max und maximum will ich nicht nutzen da es meine eigene Funktion sein soll. Ja klar das mit und geht aber ich dachte es gäbe eine elegantere Lösung ohne und, damit die nächste Zeile gecheckt wird selbst wenn der erste Fall bereits eintrat.
@gaganaut: Aber ``<`` zu benutzen ist okay obwohl Du das nicht selber geschrieben hast? Ich finde das ist eine sehr willkürliche Grenze die Du da ziehst. `max` ist Bestandteil der Prelude, warum sollte man das in eigenen Funktionen nicht nutzen?
In dem Fall definiert man sich das halt schnell selber als ``max'``. Die Funktion ist ja nicht wirklich schwer zu schreiben. Falls man ``<`` (und die anderen vordefinierten Vergleichsoperatoren) auch nicht benutzen darf wird es schon etwas umständlicher.