Haskell Sortierung einer nicht sortierbaren Liste mit einer Proxy-Reihenfolge

8

Angenommen, ich habe x :: [(n, a)] , wobei n eine Zahl ist und a ein nicht sortierbarer Gegenstand ist (gehört nicht zur Klasse Ord).

Ich möchte diese Liste nach n sortieren.

Ich kann sort x nicht ausführen, da a nicht bestellbar ist. Ich kann a durch Indizes ersetzen und dann die neue Liste mit !! zusammensetzen, aber das scheint eine schlechte Lösung zu sein.

Alternativen?

    
qrest 05.07.2010, 06:32
quelle

3 Antworten

12

Pfui. Vergiss es. sortBy .

    
qrest 05.07.2010, 06:35
quelle
5

Sie möchten

%Vor%

oder etwas Ähnliches. Sie finden on im Modul Data.Function und sortBy in Data.List , das Sie importieren müssen.

    
Norman Ramsey 05.07.2010 18:20
quelle
2

Wenn Sie eine alternative Funktion haben (z. B. f nennen), aus der eine Bestellung gebildet werden soll, können Sie die Data.Monoid-Eigenschaften von Ordering:

verwenden %Vor%

wird Ihre Funktion für die zweite Komponente des Paares verwenden. Wenn Sie kein zweites Kriterium brauchen oder haben, nach dem Sie Ihre Paare sortieren können, dann ist sortBy (comparing fst) genau richtig (die resultierende Liste enthält nur Paare mit derselben ersten Komponente in der Listenreihenfolge).

    
BMeph 06.07.2010 01:13
quelle

Tags und Links