Horje

Haskell - Containers - Data.Map
Start
  Monoid instance

Map k v provides a Monoid (opens new window) instance with the following semantics:

  • mempty is the empty Map, i.e. the same as Map.empty (opens new window)
  • m1 <> m2 is the left-biased union of m1 and m2, i.e. if any key is present both in m1 and m2, then the value from m1 is picked for m1 <> m2. This operation is also available outside the Monoid instance as Map.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


Read Article
https://develop.horje.com/learn/1434/reference