2017-05-28 6 views
1

Ich versuche herauszufinden, welche Definitionen von <, <=, > und >= für Tupel sind. Mit Blick auf ...Definition von Ord für Tupel

(-1, 3) <= (1, 2) -- True 
(2, 3) <= (1, 2) -- False 

... sieht aus wie <=könnte nur <= auf dem ersten Element jedes Tupel unter Verwendung definiert werden. Doch in diesem Beispiel bei der ersten Elemente sind gleich ...

(1, 3) <= (1, 2) -- False 

... bedeutet, dass es nicht nur <= auf dem ersten Element jedes Tupel sein, da es True gewesen wäre.

Was ist los? Was ist die Definition von <= und co on Tupel?

Antwort

3

Die Bestellung ist lexicographic. Es vergleicht die Elemente von links nach rechts, und die Reihenfolge wird durch die ersten Elemente definiert, die nicht gleich sind:

Prelude> (1, 2) < (1, 3) 
True 
Prelude> (1, 2) < (1, 1) 
False 
Prelude> (2, 2) < (1, 1) 
False 
+1

Vielen Dank! Haben Sie irgendwo eine Online-Referenz? (Ich habe also eine bessere Chance, in Zukunft ähnliche Fragen zu stellen, ohne sie hier zu fragen ...) –

+1

@MichalCharemza Sie können [LYAH] (http://learnyouahaskell.com/starting-out) dort nachlesen, wo es heißt Dies gilt für Listen und diskutiert dann die Unterschiede zwischen Listen und Tupeln. Das ist meine beste Referenz dafür (zugegebenermaßen nicht die größte). –

+4

@MichalCharemza Wenn Sie eine Sprachanwalts-Referenz benötigen, lesen Sie den Haskell-Bericht. Es schreibt vor, dass Tupel so arbeiten, als wären sie definiert durch "data (a, b) = (a, b) abgeleitet (..., Ord)" und den ["abgeleiteten" Mechanismus] (https: //www.haskell. org/onlinereport/haskell2010/haskellch11.html # x18-18300011.1) lexikographische Anordnung. – chi