Suche…


Konstruieren

Wir können eine Map aus einer Liste von Tupeln wie folgt erstellen:

Map.fromList [("Alex", 31), ("Bob", 22)]

Eine Map kann auch mit einem einzigen Wert erstellt werden:

> Map.singleton "Alex" 31
fromList [("Alex",31)]

Es gibt auch die empty Funktion.

empty :: Map k a

Data.Map unterstützt auch typische Mengenoperationen wie union , difference und intersection .

Überprüfen, ob leer

Wir verwenden die null , um zu überprüfen, ob eine bestimmte Map leer ist:

> Map.null $ Map.fromList [("Alex", 31), ("Bob", 22)]
False

> Map.null $ Map.empty
True

Werte finden

Es gibt viele Abfrageoperationen auf Karten.

member :: Ord k => k -> Map ka -> Bool ergibt True wenn sich der Schlüssel vom Typ k in Map ka :

> Map.member "Alex" $ Map.singleton "Alex" 31
True
> Map.member "Jenny" $ Map.empty
False

notMember ist ähnlich:

> Map.notMember "Alex" $ Map.singleton "Alex" 31
False
> Map.notMember "Jenny" $ Map.empty
True

Sie können auch findWithDefault :: Ord k => a -> k -> Map ka -> a , um einen Standardwert zu erhalten, wenn der Schlüssel nicht vorhanden ist:

Map.findWithDefault 'x' 1 (fromList [(5,'a'), (3,'b')]) == 'x'
Map.findWithDefault 'x' 5 (fromList [(5,'a'), (3,'b')]) == 'a'

Elemente einfügen

Das Einfügen von Elementen ist einfach:

> let m = Map.singleton "Alex" 31
fromList [("Alex",31)]

> Map.insert "Bob" 99 m
fromList [("Alex",31),("Bob",99)]

Elemente löschen

> let m = Map.fromList [("Alex", 31), ("Bob", 99)]
fromList [("Alex",31),("Bob",99)]

> Map.delete "Bob" m
fromList [("Alex",31)]

Das Modul importieren

Das Data.Map Modul im containers stellt eine Map Struktur bereit, die sowohl strikte als auch verzögerte Implementierungen enthält.

Wenn Sie Data.Map , importiert es normalerweise qualifiziert, um Data.Map mit bereits in Prelude definierten Funktionen zu vermeiden:

import qualified Data.Map as Map

Wir haben also Map Aufrufe mit Map. vorangestellt Map. , z.B

Map.empty -- give me an empty Map

Monoid-Beispiel

Map kv stellt eine Monoid- Instanz mit folgender Semantik bereit:

  • mempty ist die leere Map , dh das gleiche wie Map.empty
  • m1 <> m2 ist die nach links vorgespannte Vereinigung von m1 und m2 , dh, wenn ein Schlüssel sowohl in m1 als auch in m2 vorliegt, wird der Wert von m1 für m1 <> m2 . Diese Operation ist auch außerhalb der Monoid Instanz als Map.union .


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow