Ricerca…


Costruire

Possiamo creare una mappa da un elenco di tuple come questo:

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

Una mappa può anche essere costruita con un singolo valore:

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

C'è anche la funzione empty .

empty :: Map k a

Data.Map supporta anche operazioni tipiche dell'insieme come union , difference e intersection .

Controllo se vuoto

Usiamo la funzione null per verificare se una determinata mappa è vuota:

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

> Map.null $ Map.empty
True

Trovare i valori

Ci sono molte operazioni di interrogazione sulle mappe.

member :: Ord k => k -> Map ka -> Bool restituisce True se la chiave di tipo k è in Map ka :

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

notMember è simile:

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

Puoi anche usare findWithDefault :: Ord k => a -> k -> Map ka -> a per ottenere un valore predefinito se la chiave non è presente:

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

Inserimento di elementi

Inserire gli elementi è semplice:

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

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

Eliminazione di elementi

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

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

Importazione del modulo

Il modulo Data.Map nel pacchetto containers fornisce una struttura Map implementazioni sia rigorose che lazy.

Quando si utilizza Data.Map , solitamente viene importato qualificato per evitare conflitti con funzioni già definite in Preludio:

import qualified Data.Map as Map

Così avremmo poi anteporre Map chiamate di funzione con Map. , per esempio

Map.empty -- give me an empty Map

Istanza monoide

Map kv fornisce un'istanza Monoid con la seguente semantica:

  • mempty è la Map vuota, cioè la stessa di Map.empty
  • m1 <> m2 è l'unione a sinistra di m1 e m2 , cioè se è presente un qualsiasi tasto sia in m1 che in m2 , allora il valore di m1 viene scelto per m1 <> m2 . Questa operazione è disponibile all'esterno del anche Monoid istanza come Map.union .


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow