Haskell Language
Conteneurs - Data.Map
Recherche…
La construction
Nous pouvons créer une carte à partir d'une liste de tuples comme ceci:
Map.fromList [("Alex", 31), ("Bob", 22)]
Une carte peut également être construite avec une seule valeur:
> Map.singleton "Alex" 31 fromList [("Alex",31)]
Il y a aussi la fonction empty
.
empty :: Map k a
Data.Map prend également en charge les opérations classiques telles que l' union
, la difference
et l' intersection
.
Vérification si vide
Nous utilisons la fonction null
pour vérifier si une carte donnée est vide:
> Map.null $ Map.fromList [("Alex", 31), ("Bob", 22)] False > Map.null $ Map.empty True
Trouver des valeurs
Il existe de nombreuses opérations d'interrogation sur les cartes.
member :: Ord k => k -> Map ka -> Bool
True
si la clé de type k
est dans la Map ka
:
> Map.member "Alex" $ Map.singleton "Alex" 31 True > Map.member "Jenny" $ Map.empty False
notMember
est similaire:
> Map.notMember "Alex" $ Map.singleton "Alex" 31 False > Map.notMember "Jenny" $ Map.empty True
Vous pouvez également utiliser findWithDefault :: Ord k => a -> k -> Map ka -> a
pour donner une valeur par défaut si la clé n'est pas présente:
Map.findWithDefault 'x' 1 (fromList [(5,'a'), (3,'b')]) == 'x' Map.findWithDefault 'x' 5 (fromList [(5,'a'), (3,'b')]) == 'a'
Insertion d'éléments
L'insertion d' éléments est simple:
> let m = Map.singleton "Alex" 31 fromList [("Alex",31)] > Map.insert "Bob" 99 m fromList [("Alex",31),("Bob",99)]
Supprimer des éléments
> let m = Map.fromList [("Alex", 31), ("Bob", 99)] fromList [("Alex",31),("Bob",99)] > Map.delete "Bob" m fromList [("Alex",31)]
Importation du module
Le module Data.Map
dans le package de containers
fournit une structure Map
qui possède des implémentations strictes et différées.
Lors de l'utilisation de Data.Map
, on l'importe habituellement pour éviter les conflits avec les fonctions déjà définies dans Prelude:
import qualified Data.Map as Map
Donc , nous avions alors précédez Map
fonction des appels avec Map.
, par exemple
Map.empty -- give me an empty Map
Instance monoïde
Map kv
fournit une instance Monoid avec la sémantique suivante:
-
mempty
est laMap
vide, c'est-à-dire identique àMap.empty
-
m1 <> m2
est la relation biaisée à gauche dem1
etm2
, c'est-à-dire que si une clé est présente à la fois dansm1
etm2
, la valeur dem1
est choisie pourm1 <> m2
. Cette opération est également disponible en dehors de laMonoid
par exemple commeMap.union
.