{- | Module : Data.MapLike.Instances Copyright : (c) Eduard Sergeev 2011 License : BSD-style (see the file LICENSE) Maintainer : eduard.sergeev@gmail.com Stability : experimental Portability : non-portable (multi-param classes, functional dependencies) Defines MapLike instances declaration for standard data types -} {-# LANGUAGE NoImplicitPrelude, MultiParamTypeClasses, FlexibleInstances #-} module Data.MapLike.Instances ( MapLike(..) ) where import Data.Ord import Data.Int import Data.MapLike import qualified Data.Map as M import qualified Data.IntMap as IM -- | Data.Map is a default implementation (not the fastest but well-known) instance Ord k => MapLike (M.Map k v) k v where add = M.insert lookup = M.lookup -- | Data.IntMap is usually more efficient that Data.Map if @k :: Int@ instance MapLike (IM.IntMap v) Int v where {-# INLINE add #-} add = IM.insert {-# INLINE lookup #-} lookup = IM.lookup