The Data.Map module in the containers package 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:
import qualified Data.Map as Map
So we'd then prepend Map function calls with Map., e.g.
Map.empty -- give me an empty Map