module Data.Map.Functor.Classes () where
import Data.Functor.Classes
import Data.Map (Map, fromList, size, toList)
instance Eq2 Map where
liftEq2 eqk eqv m n =
size m == size n && liftEq (liftEq2 eqk eqv) (toList m) (toList n)
instance Eq k => Eq1 (Map k) where
liftEq = liftEq2 (==)
instance Ord2 Map where
liftCompare2 cmpk cmpv m n =
liftCompare (liftCompare2 cmpk cmpv) (toList m) (toList n)
instance Ord k => Ord1 (Map k) where
liftCompare = liftCompare2 compare
instance Show2 Map where
liftShowsPrec2 spk slk spv slv d m =
showsUnaryWith (liftShowsPrec sp sl) "fromList" d (toList m)
where
sp = liftShowsPrec2 spk slk spv slv
sl = liftShowList2 spk slk spv slv
instance Show k => Show1 (Map k) where
liftShowsPrec = liftShowsPrec2 showsPrec showList
instance (Ord k, Read k) => Read1 (Map k) where
liftReadsPrec rp rl = readsData $
readsUnaryWith (liftReadsPrec rp' rl') "fromList" fromList
where
rp' = liftReadsPrec rp rl
rl' = liftReadList rp rl