Ich bin ein Anfänger in Haskell also bitte bitte mit mir. (Habe erst gestern angefangen zu lernen!) Wie kann ich eine Liste von Tupeln in erster Linie nach ihren ersten Komponenten sortieren (am höchsten zum kleinsten) und zweitens nach ihren zweiten Komponenten (am kleinsten zum höchsten)? Eine Probe Eingabe/Ausgabe wäre:In Haskell, wie kann ich die integrierte Funktion sortBy verwenden, um eine Liste von Paaren (Tupel) zu sortieren?
[(1, "b"), (1, "a"), (2, "b"), (2, "a")]
(Eingang)
[(1, "a"), (2, "a"), (1, "b"), (2, "b")]
(mittlere Stufe)
[(2, "a"), (2, "b"), (1, "a"), (1, "b")]
(Ausgang)
Ich habe versucht, mit dem folgenden, aber es gibt falsche Ausgabe:
sortGT a b = GT
sortBy sortGT lst
Ich bin mir sicher, dass ich dies nur mit sortBy
tun kann, aber ich kann nicht ich tu mich selbst aus. Jede Hilfe würde sehr geschätzt werden!
@haskell noob Beachten Sie, dass der Vergleich der ersten Argumente (die a's) tatsächlich an erster Stelle steht, da dieser Vergleich Vorrang vor den bs hat. Ich würde das wahrscheinlich als "erstes Sortieren nach dem ersten Argument" beschreiben, aber natürlich ist klar, was du meintest, da du ein Beispiel gegeben hast. – MatrixFrog
Danke 3lectrologos! Lief wie am Schnürchen. @MatrixFrog - Entschuldigung für das verwirrende Englisch. Nicht meine Muttersprache sowieso! – eclipseNoob
Dies ist, was "vergleichen" standardmäßig tut. vergleiche (1, "b") (2, "a") = LT. Das Originalplakat wollte es andersherum machen. –