{-# LANGUAGE Safe #-} ----------------------------------------------------------------------------- -- | -- Module : Map -- Copyright : (c) Daan Leijen 2002 -- (c) Andriy Palamarchuk 2008 -- (c) Edward Kmett 2018 -- License : BSD-style -- Maintainer : libraries@haskell.org -- Portability : portable -- -- /Note:/ You should use "Map.Strict" instead of this module if: -- -- * You will eventually need all the values stored. -- -- * The stored values don't represent large virtual data structures -- to be lazily computed. -- -- An efficient implementation of ordered maps from keys to values -- (dictionaries). -- -- These modules are intended to be imported qualified, to avoid name -- clashes with Prelude functions, e.g. -- -- > import qualified Map as Map -- -- The implementation of 'Map' is based on /size balanced/ binary trees (or -- trees of /bounded balance/) as described by: -- -- * Stephen Adams, \"/Efficient sets: a balancing act/\", -- Journal of Functional Programming 3(4):553-562, October 1993, -- . -- * J. Nievergelt and E.M. Reingold, -- \"/Binary search trees of bounded balance/\", -- SIAM journal of computing 2(1), March 1973. -- -- Bounds for 'union', 'intersection', and 'difference' are as given -- by -- -- * Guy Blelloch, Daniel Ferizovic, and Yihan Sun, -- \"/Just Join for Parallel Ordered Sets/\", -- . -- -- Note that the implementation is /left-biased/ -- the elements of a -- first argument are always preferred to the second, for example in -- 'union' or 'insert'. -- -- /Warning/: The size of the map must not exceed @maxBound::Int@. Violation of -- this condition is not detected and if the size limit is exceeded, its -- behaviour is undefined. -- -- Operation comments contain the operation time complexity in -- the Big-O notation (). ----------------------------------------------------------------------------- module Map ( module Map.Lazy ) where import Prelude hiding (foldr) import Map.Lazy