sharufa hat geschrieben:
Ich verwende DataMaps, da mir gesagt wurde, dass diese auf Grund ihrer Veränderlichkeit
eine bessere Performance als Listen besitzen.
Nur zur Klarstellung - ich nehme mal an, du willst sagen, dass du nachträglich neue Elemente hinzufügen oder entfernen willst? Ja, dann ist die Liste keine gute Wahl, denn diese Operationen wären damit schlimmstenfalls
O(n).
Um die Sortierreihenfolge zu verändern, brauchst du eine andere
Ord-Instanz für deinen Key. Da du den von
String (noch) nicht überschreiben kannst, heißt das, dass du den Key-Typ ändern musst. Das ist nicht wirklich kompliziert:
newtype MyString = MyString { fromMyString :: String }
deriving (Eq, Show)
instance Ord MyString
(MyString s1) `compare` (MyString s2) = ...
Durch Verwendung von
newtype wird das Ganze zu einem reinen Compile-Time-Konstrukt, dieser Wrapper kostet dich also nichts in Sachen Performance. Mit
deriving kannst du so viele Instanzen übernehmen, wie du unverändert behalten möchtest.
Die interessantere Frage ist, ob du jetzt die Bilbiotheks-Funktionen so verpackst, dass sie jeweils
String nach
MyString konvertieren - oder ob du gleich überall
MyString verwenden solltest. Ich würde zu letzterem raten
