# Containers - Data.Map
# Monoid instance
Map k v provides a Monoid (opens new window) instance with the following semantics:
memptyis the emptyMap, i.e. the same asMap.empty(opens new window)m1 <> m2is the left-biased union ofm1andm2, i.e. if any key is present both inm1andm2, then the value fromm1is picked form1 <> m2. This operation is also available outside theMonoidinstance asMap.union(opens new window).
# Constructing
We can create a Map from a list of tuples like this:
A Map can also be constructed with a single value:
There is also the empty function.
Data.Map also supports typical set operations such as union (opens new window), difference (opens new window) and intersection (opens new window).
# Checking If Empty
We use the null function to check if a given Map is empty:
# Finding Values
There are many (opens new window) querying operations on maps.
member :: Ord k => k -> Map k a -> Bool yields True if the key of type k is in Map k a:
notMember is similar:
You can also use findWithDefault :: Ord k => a -> k -> Map k a -> a (opens new window) to yield a default value if the key isn't present:
# Inserting Elements
Inserting (opens new window) elements is simple:
# Deleting Elements
# Importing the Module
The Data.Map module in the containers package (opens new window) provides a Map structure that has both strict and lazy implementations.
When using Data.Map, one usually imports it qualified to avoid clashes with functions already defined in Prelude:
Map.empty -- give me an empty Map