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 la Map vide, c'est-à-dire identique à Map.empty
  • m1 <> m2 est la relation biaisée à gauche de m1 et m2 , c'est-à-dire que si une clé est présente à la fois dans m1 et m2 , la valeur de m1 est choisie pour m1 <> m2 . Cette opération est également disponible en dehors de la Monoid par exemple comme Map.union .


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow