module IntLike.Map ( IntLikeMap (..) , empty , singleton , fromList , size , null , member , toList , keys , keysSet , elems , lookup , partialLookup , findWithDefault , insert , insertWith , adjust , alter , delete , minViewWithKey , filter , restrictKeys , map , insertState , mapWithKey ) where import Control.DeepSeq (NFData) import Data.Coerce (Coercible, coerce) import Data.IntMap.Strict (IntMap) import qualified Data.IntMap.Strict as IntMap import IntLike.Set (IntLikeSet (..)) import Prelude hiding (filter, lookup, map, null) newtype IntLikeMap x a = IntLikeMap {forall x a. IntLikeMap x a -> IntMap a unIntLikeMap :: IntMap a} deriving stock (Int -> IntLikeMap x a -> ShowS [IntLikeMap x a] -> ShowS IntLikeMap x a -> String (Int -> IntLikeMap x a -> ShowS) -> (IntLikeMap x a -> String) -> ([IntLikeMap x a] -> ShowS) -> Show (IntLikeMap x a) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall x a. Show a => Int -> IntLikeMap x a -> ShowS forall x a. Show a => [IntLikeMap x a] -> ShowS forall x a. Show a => IntLikeMap x a -> String $cshowsPrec :: forall x a. Show a => Int -> IntLikeMap x a -> ShowS showsPrec :: Int -> IntLikeMap x a -> ShowS $cshow :: forall x a. Show a => IntLikeMap x a -> String show :: IntLikeMap x a -> String $cshowList :: forall x a. Show a => [IntLikeMap x a] -> ShowS showList :: [IntLikeMap x a] -> ShowS Show, Functor (IntLikeMap x) Foldable (IntLikeMap x) (Functor (IntLikeMap x), Foldable (IntLikeMap x)) => (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> IntLikeMap x a -> f (IntLikeMap x b)) -> (forall (f :: * -> *) a. Applicative f => IntLikeMap x (f a) -> f (IntLikeMap x a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> IntLikeMap x a -> m (IntLikeMap x b)) -> (forall (m :: * -> *) a. Monad m => IntLikeMap x (m a) -> m (IntLikeMap x a)) -> Traversable (IntLikeMap x) forall x. Functor (IntLikeMap x) forall x. Foldable (IntLikeMap x) forall x (m :: * -> *) a. Monad m => IntLikeMap x (m a) -> m (IntLikeMap x a) forall x (f :: * -> *) a. Applicative f => IntLikeMap x (f a) -> f (IntLikeMap x a) forall x (m :: * -> *) a b. Monad m => (a -> m b) -> IntLikeMap x a -> m (IntLikeMap x b) forall x (f :: * -> *) a b. Applicative f => (a -> f b) -> IntLikeMap x a -> f (IntLikeMap x b) forall (t :: * -> *). (Functor t, Foldable t) => (forall (f :: * -> *) a b. Applicative f => (a -> f b) -> t a -> f (t b)) -> (forall (f :: * -> *) a. Applicative f => t (f a) -> f (t a)) -> (forall (m :: * -> *) a b. Monad m => (a -> m b) -> t a -> m (t b)) -> (forall (m :: * -> *) a. Monad m => t (m a) -> m (t a)) -> Traversable t forall (m :: * -> *) a. Monad m => IntLikeMap x (m a) -> m (IntLikeMap x a) forall (f :: * -> *) a. Applicative f => IntLikeMap x (f a) -> f (IntLikeMap x a) forall (m :: * -> *) a b. Monad m => (a -> m b) -> IntLikeMap x a -> m (IntLikeMap x b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> IntLikeMap x a -> f (IntLikeMap x b) $ctraverse :: forall x (f :: * -> *) a b. Applicative f => (a -> f b) -> IntLikeMap x a -> f (IntLikeMap x b) traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> IntLikeMap x a -> f (IntLikeMap x b) $csequenceA :: forall x (f :: * -> *) a. Applicative f => IntLikeMap x (f a) -> f (IntLikeMap x a) sequenceA :: forall (f :: * -> *) a. Applicative f => IntLikeMap x (f a) -> f (IntLikeMap x a) $cmapM :: forall x (m :: * -> *) a b. Monad m => (a -> m b) -> IntLikeMap x a -> m (IntLikeMap x b) mapM :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> IntLikeMap x a -> m (IntLikeMap x b) $csequence :: forall x (m :: * -> *) a. Monad m => IntLikeMap x (m a) -> m (IntLikeMap x a) sequence :: forall (m :: * -> *) a. Monad m => IntLikeMap x (m a) -> m (IntLikeMap x a) Traversable) deriving newtype (IntLikeMap x a -> IntLikeMap x a -> Bool (IntLikeMap x a -> IntLikeMap x a -> Bool) -> (IntLikeMap x a -> IntLikeMap x a -> Bool) -> Eq (IntLikeMap x a) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall x a. Eq a => IntLikeMap x a -> IntLikeMap x a -> Bool $c== :: forall x a. Eq a => IntLikeMap x a -> IntLikeMap x a -> Bool == :: IntLikeMap x a -> IntLikeMap x a -> Bool $c/= :: forall x a. Eq a => IntLikeMap x a -> IntLikeMap x a -> Bool /= :: IntLikeMap x a -> IntLikeMap x a -> Bool Eq, Eq (IntLikeMap x a) Eq (IntLikeMap x a) => (IntLikeMap x a -> IntLikeMap x a -> Ordering) -> (IntLikeMap x a -> IntLikeMap x a -> Bool) -> (IntLikeMap x a -> IntLikeMap x a -> Bool) -> (IntLikeMap x a -> IntLikeMap x a -> Bool) -> (IntLikeMap x a -> IntLikeMap x a -> Bool) -> (IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a) -> (IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a) -> Ord (IntLikeMap x a) IntLikeMap x a -> IntLikeMap x a -> Bool IntLikeMap x a -> IntLikeMap x a -> Ordering IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a forall x a. Ord a => Eq (IntLikeMap x a) forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Bool forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Ordering forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a $ccompare :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Ordering compare :: IntLikeMap x a -> IntLikeMap x a -> Ordering $c< :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Bool < :: IntLikeMap x a -> IntLikeMap x a -> Bool $c<= :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Bool <= :: IntLikeMap x a -> IntLikeMap x a -> Bool $c> :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Bool > :: IntLikeMap x a -> IntLikeMap x a -> Bool $c>= :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> Bool >= :: IntLikeMap x a -> IntLikeMap x a -> Bool $cmax :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a max :: IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a $cmin :: forall x a. Ord a => IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a min :: IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a Ord, (forall a b. (a -> b) -> IntLikeMap x a -> IntLikeMap x b) -> (forall a b. a -> IntLikeMap x b -> IntLikeMap x a) -> Functor (IntLikeMap x) forall a b. a -> IntLikeMap x b -> IntLikeMap x a forall a b. (a -> b) -> IntLikeMap x a -> IntLikeMap x b forall x a b. a -> IntLikeMap x b -> IntLikeMap x a forall x a b. (a -> b) -> IntLikeMap x a -> IntLikeMap x b forall (f :: * -> *). (forall a b. (a -> b) -> f a -> f b) -> (forall a b. a -> f b -> f a) -> Functor f $cfmap :: forall x a b. (a -> b) -> IntLikeMap x a -> IntLikeMap x b fmap :: forall a b. (a -> b) -> IntLikeMap x a -> IntLikeMap x b $c<$ :: forall x a b. a -> IntLikeMap x b -> IntLikeMap x a <$ :: forall a b. a -> IntLikeMap x b -> IntLikeMap x a Functor, (forall m. Monoid m => IntLikeMap x m -> m) -> (forall m a. Monoid m => (a -> m) -> IntLikeMap x a -> m) -> (forall m a. Monoid m => (a -> m) -> IntLikeMap x a -> m) -> (forall a b. (a -> b -> b) -> b -> IntLikeMap x a -> b) -> (forall a b. (a -> b -> b) -> b -> IntLikeMap x a -> b) -> (forall b a. (b -> a -> b) -> b -> IntLikeMap x a -> b) -> (forall b a. (b -> a -> b) -> b -> IntLikeMap x a -> b) -> (forall a. (a -> a -> a) -> IntLikeMap x a -> a) -> (forall a. (a -> a -> a) -> IntLikeMap x a -> a) -> (forall a. IntLikeMap x a -> [a]) -> (forall a. IntLikeMap x a -> Bool) -> (forall a. IntLikeMap x a -> Int) -> (forall a. Eq a => a -> IntLikeMap x a -> Bool) -> (forall a. Ord a => IntLikeMap x a -> a) -> (forall a. Ord a => IntLikeMap x a -> a) -> (forall a. Num a => IntLikeMap x a -> a) -> (forall a. Num a => IntLikeMap x a -> a) -> Foldable (IntLikeMap x) forall a. Eq a => a -> IntLikeMap x a -> Bool forall a. Num a => IntLikeMap x a -> a forall a. Ord a => IntLikeMap x a -> a forall m. Monoid m => IntLikeMap x m -> m forall a. IntLikeMap x a -> Bool forall a. IntLikeMap x a -> Int forall a. IntLikeMap x a -> [a] forall a. (a -> a -> a) -> IntLikeMap x a -> a forall x a. Eq a => a -> IntLikeMap x a -> Bool forall x a. Num a => IntLikeMap x a -> a forall x a. Ord a => IntLikeMap x a -> a forall m a. Monoid m => (a -> m) -> IntLikeMap x a -> m forall x m. Monoid m => IntLikeMap x m -> m forall x a. IntLikeMap x a -> Bool forall x a. IntLikeMap x a -> Int forall x a. IntLikeMap x a -> [a] forall b a. (b -> a -> b) -> b -> IntLikeMap x a -> b forall a b. (a -> b -> b) -> b -> IntLikeMap x a -> b forall x a. (a -> a -> a) -> IntLikeMap x a -> a forall x m a. Monoid m => (a -> m) -> IntLikeMap x a -> m forall x b a. (b -> a -> b) -> b -> IntLikeMap x a -> b forall x a b. (a -> b -> b) -> b -> IntLikeMap x a -> b forall (t :: * -> *). (forall m. Monoid m => t m -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall m a. Monoid m => (a -> m) -> t a -> m) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall a b. (a -> b -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall b a. (b -> a -> b) -> b -> t a -> b) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. (a -> a -> a) -> t a -> a) -> (forall a. t a -> [a]) -> (forall a. t a -> Bool) -> (forall a. t a -> Int) -> (forall a. Eq a => a -> t a -> Bool) -> (forall a. Ord a => t a -> a) -> (forall a. Ord a => t a -> a) -> (forall a. Num a => t a -> a) -> (forall a. Num a => t a -> a) -> Foldable t $cfold :: forall x m. Monoid m => IntLikeMap x m -> m fold :: forall m. Monoid m => IntLikeMap x m -> m $cfoldMap :: forall x m a. Monoid m => (a -> m) -> IntLikeMap x a -> m foldMap :: forall m a. Monoid m => (a -> m) -> IntLikeMap x a -> m $cfoldMap' :: forall x m a. Monoid m => (a -> m) -> IntLikeMap x a -> m foldMap' :: forall m a. Monoid m => (a -> m) -> IntLikeMap x a -> m $cfoldr :: forall x a b. (a -> b -> b) -> b -> IntLikeMap x a -> b foldr :: forall a b. (a -> b -> b) -> b -> IntLikeMap x a -> b $cfoldr' :: forall x a b. (a -> b -> b) -> b -> IntLikeMap x a -> b foldr' :: forall a b. (a -> b -> b) -> b -> IntLikeMap x a -> b $cfoldl :: forall x b a. (b -> a -> b) -> b -> IntLikeMap x a -> b foldl :: forall b a. (b -> a -> b) -> b -> IntLikeMap x a -> b $cfoldl' :: forall x b a. (b -> a -> b) -> b -> IntLikeMap x a -> b foldl' :: forall b a. (b -> a -> b) -> b -> IntLikeMap x a -> b $cfoldr1 :: forall x a. (a -> a -> a) -> IntLikeMap x a -> a foldr1 :: forall a. (a -> a -> a) -> IntLikeMap x a -> a $cfoldl1 :: forall x a. (a -> a -> a) -> IntLikeMap x a -> a foldl1 :: forall a. (a -> a -> a) -> IntLikeMap x a -> a $ctoList :: forall x a. IntLikeMap x a -> [a] toList :: forall a. IntLikeMap x a -> [a] $cnull :: forall x a. IntLikeMap x a -> Bool null :: forall a. IntLikeMap x a -> Bool $clength :: forall x a. IntLikeMap x a -> Int length :: forall a. IntLikeMap x a -> Int $celem :: forall x a. Eq a => a -> IntLikeMap x a -> Bool elem :: forall a. Eq a => a -> IntLikeMap x a -> Bool $cmaximum :: forall x a. Ord a => IntLikeMap x a -> a maximum :: forall a. Ord a => IntLikeMap x a -> a $cminimum :: forall x a. Ord a => IntLikeMap x a -> a minimum :: forall a. Ord a => IntLikeMap x a -> a $csum :: forall x a. Num a => IntLikeMap x a -> a sum :: forall a. Num a => IntLikeMap x a -> a $cproduct :: forall x a. Num a => IntLikeMap x a -> a product :: forall a. Num a => IntLikeMap x a -> a Foldable, IntLikeMap x a -> () (IntLikeMap x a -> ()) -> NFData (IntLikeMap x a) forall a. (a -> ()) -> NFData a forall x a. NFData a => IntLikeMap x a -> () $crnf :: forall x a. NFData a => IntLikeMap x a -> () rnf :: IntLikeMap x a -> () NFData, NonEmpty (IntLikeMap x a) -> IntLikeMap x a IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a (IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a) -> (NonEmpty (IntLikeMap x a) -> IntLikeMap x a) -> (forall b. Integral b => b -> IntLikeMap x a -> IntLikeMap x a) -> Semigroup (IntLikeMap x a) forall b. Integral b => b -> IntLikeMap x a -> IntLikeMap x a forall a. (a -> a -> a) -> (NonEmpty a -> a) -> (forall b. Integral b => b -> a -> a) -> Semigroup a forall x a. NonEmpty (IntLikeMap x a) -> IntLikeMap x a forall x a. IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a forall x a b. Integral b => b -> IntLikeMap x a -> IntLikeMap x a $c<> :: forall x a. IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a <> :: IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a $csconcat :: forall x a. NonEmpty (IntLikeMap x a) -> IntLikeMap x a sconcat :: NonEmpty (IntLikeMap x a) -> IntLikeMap x a $cstimes :: forall x a b. Integral b => b -> IntLikeMap x a -> IntLikeMap x a stimes :: forall b. Integral b => b -> IntLikeMap x a -> IntLikeMap x a Semigroup, Semigroup (IntLikeMap x a) IntLikeMap x a Semigroup (IntLikeMap x a) => IntLikeMap x a -> (IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a) -> ([IntLikeMap x a] -> IntLikeMap x a) -> Monoid (IntLikeMap x a) [IntLikeMap x a] -> IntLikeMap x a IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a forall a. Semigroup a => a -> (a -> a -> a) -> ([a] -> a) -> Monoid a forall x a. Semigroup (IntLikeMap x a) forall x a. IntLikeMap x a forall x a. [IntLikeMap x a] -> IntLikeMap x a forall x a. IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a $cmempty :: forall x a. IntLikeMap x a mempty :: IntLikeMap x a $cmappend :: forall x a. IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a mappend :: IntLikeMap x a -> IntLikeMap x a -> IntLikeMap x a $cmconcat :: forall x a. [IntLikeMap x a] -> IntLikeMap x a mconcat :: [IntLikeMap x a] -> IntLikeMap x a Monoid) empty :: IntLikeMap x a empty :: forall x a. IntLikeMap x a empty = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap IntMap a forall a. IntMap a IntMap.empty {-# INLINE empty #-} singleton :: Coercible x Int => x -> a -> IntLikeMap x a singleton :: forall x a. Coercible x Int => x -> a -> IntLikeMap x a singleton x x = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (a -> IntMap a) -> a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a -> IntMap a forall a. Int -> a -> IntMap a IntMap.singleton (x -> Int forall a b. Coercible a b => a -> b coerce x x) {-# INLINE singleton #-} fromList :: Coercible x Int => [(x, a)] -> IntLikeMap x a fromList :: forall x a. Coercible x Int => [(x, a)] -> IntLikeMap x a fromList = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> ([(x, a)] -> IntMap a) -> [(x, a)] -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . [(Int, a)] -> IntMap a forall a. [(Int, a)] -> IntMap a IntMap.fromList ([(Int, a)] -> IntMap a) -> ([(x, a)] -> [(Int, a)]) -> [(x, a)] -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . [(x, a)] -> [(Int, a)] forall a b. Coercible a b => a -> b coerce {-# INLINE fromList #-} size :: IntLikeMap x a -> Int size :: forall x a. IntLikeMap x a -> Int size = IntMap a -> Int forall a. IntMap a -> Int IntMap.size (IntMap a -> Int) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> Int forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE size #-} null :: IntLikeMap x a -> Bool null :: forall x a. IntLikeMap x a -> Bool null = IntMap a -> Bool forall a. IntMap a -> Bool IntMap.null (IntMap a -> Bool) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE null #-} member :: Coercible x Int => x -> IntLikeMap x a -> Bool member :: forall x a. Coercible x Int => x -> IntLikeMap x a -> Bool member x x = Int -> IntMap a -> Bool forall a. Int -> IntMap a -> Bool IntMap.member (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> Bool) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE member #-} toList :: Coercible x Int => IntLikeMap x a -> [(x, a)] toList :: forall x a. Coercible x Int => IntLikeMap x a -> [(x, a)] toList = [(Int, a)] -> [(x, a)] forall a b. Coercible a b => a -> b coerce ([(Int, a)] -> [(x, a)]) -> (IntLikeMap x a -> [(Int, a)]) -> IntLikeMap x a -> [(x, a)] forall b c a. (b -> c) -> (a -> b) -> a -> c . IntMap a -> [(Int, a)] forall a. IntMap a -> [(Int, a)] IntMap.toList (IntMap a -> [(Int, a)]) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> [(Int, a)] forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE toList #-} keys :: Coercible x Int => IntLikeMap x a -> [x] keys :: forall x a. Coercible x Int => IntLikeMap x a -> [x] keys = [Int] -> [x] forall a b. Coercible a b => a -> b coerce ([Int] -> [x]) -> (IntLikeMap x a -> [Int]) -> IntLikeMap x a -> [x] forall b c a. (b -> c) -> (a -> b) -> a -> c . IntMap a -> [Int] forall a. IntMap a -> [Int] IntMap.keys (IntMap a -> [Int]) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> [Int] forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE keys #-} keysSet :: IntLikeMap x a -> IntLikeSet x keysSet :: forall x a. IntLikeMap x a -> IntLikeSet x keysSet = IntSet -> IntLikeSet x forall x. IntSet -> IntLikeSet x IntLikeSet (IntSet -> IntLikeSet x) -> (IntLikeMap x a -> IntSet) -> IntLikeMap x a -> IntLikeSet x forall b c a. (b -> c) -> (a -> b) -> a -> c . IntMap a -> IntSet forall a. IntMap a -> IntSet IntMap.keysSet (IntMap a -> IntSet) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntSet forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE keysSet #-} elems :: IntLikeMap x a -> [a] elems :: forall x a. IntLikeMap x a -> [a] elems = IntMap a -> [a] forall a. IntMap a -> [a] IntMap.elems (IntMap a -> [a]) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> [a] forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE elems #-} lookup :: Coercible x Int => x -> IntLikeMap x a -> Maybe a lookup :: forall x a. Coercible x Int => x -> IntLikeMap x a -> Maybe a lookup x x = Int -> IntMap a -> Maybe a forall a. Int -> IntMap a -> Maybe a IntMap.lookup (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> Maybe a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> Maybe a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE lookup #-} partialLookup :: Coercible x Int => x -> IntLikeMap x a -> a partialLookup :: forall x a. Coercible x Int => x -> IntLikeMap x a -> a partialLookup x x IntLikeMap x a m = IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap IntLikeMap x a m IntMap a -> Int -> a forall a. IntMap a -> Int -> a IntMap.! x -> Int forall a b. Coercible a b => a -> b coerce x x {-# INLINE partialLookup #-} findWithDefault :: Coercible x Int => a -> x -> IntLikeMap x a -> a findWithDefault :: forall x a. Coercible x Int => a -> x -> IntLikeMap x a -> a findWithDefault a a x x = a -> Int -> IntMap a -> a forall a. a -> Int -> IntMap a -> a IntMap.findWithDefault a a (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE findWithDefault #-} insert :: Coercible x Int => x -> a -> IntLikeMap x a -> IntLikeMap x a insert :: forall x a. Coercible x Int => x -> a -> IntLikeMap x a -> IntLikeMap x a insert x x a a = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a -> IntMap a -> IntMap a forall a. Int -> a -> IntMap a -> IntMap a IntMap.insert (x -> Int forall a b. Coercible a b => a -> b coerce x x) a a (IntMap a -> IntMap a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE insert #-} insertWith :: Coercible x Int => (a -> a -> a) -> x -> a -> IntLikeMap x a -> IntLikeMap x a insertWith :: forall x a. Coercible x Int => (a -> a -> a) -> x -> a -> IntLikeMap x a -> IntLikeMap x a insertWith a -> a -> a f x x a a = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> a -> a) -> Int -> a -> IntMap a -> IntMap a forall a. (a -> a -> a) -> Int -> a -> IntMap a -> IntMap a IntMap.insertWith a -> a -> a f (x -> Int forall a b. Coercible a b => a -> b coerce x x) a a (IntMap a -> IntMap a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE insertWith #-} adjust :: Coercible x Int => (a -> a) -> x -> IntLikeMap x a -> IntLikeMap x a adjust :: forall x a. Coercible x Int => (a -> a) -> x -> IntLikeMap x a -> IntLikeMap x a adjust a -> a f x x = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> a) -> Int -> IntMap a -> IntMap a forall a. (a -> a) -> Int -> IntMap a -> IntMap a IntMap.adjust a -> a f (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> IntMap a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE adjust #-} alter :: Coercible x Int => (Maybe a -> Maybe a) -> x -> IntLikeMap x a -> IntLikeMap x a alter :: forall x a. Coercible x Int => (Maybe a -> Maybe a) -> x -> IntLikeMap x a -> IntLikeMap x a alter Maybe a -> Maybe a f x x = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . (Maybe a -> Maybe a) -> Int -> IntMap a -> IntMap a forall a. (Maybe a -> Maybe a) -> Int -> IntMap a -> IntMap a IntMap.alter Maybe a -> Maybe a f (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> IntMap a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE alter #-} delete :: Coercible x Int => x -> IntLikeMap x a -> IntLikeMap x a delete :: forall x a. Coercible x Int => x -> IntLikeMap x a -> IntLikeMap x a delete x x = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> IntMap a -> IntMap a forall a. Int -> IntMap a -> IntMap a IntMap.delete (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> IntMap a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE delete #-} minViewWithKey :: Coercible x Int => IntLikeMap x a -> Maybe ((x, a), IntLikeMap x a) minViewWithKey :: forall x a. Coercible x Int => IntLikeMap x a -> Maybe ((x, a), IntLikeMap x a) minViewWithKey = Maybe ((Int, a), IntMap a) -> Maybe ((x, a), IntLikeMap x a) forall a b. Coercible a b => a -> b coerce (Maybe ((Int, a), IntMap a) -> Maybe ((x, a), IntLikeMap x a)) -> (IntLikeMap x a -> Maybe ((Int, a), IntMap a)) -> IntLikeMap x a -> Maybe ((x, a), IntLikeMap x a) forall b c a. (b -> c) -> (a -> b) -> a -> c . IntMap a -> Maybe ((Int, a), IntMap a) forall a. IntMap a -> Maybe ((Int, a), IntMap a) IntMap.minViewWithKey (IntMap a -> Maybe ((Int, a), IntMap a)) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> Maybe ((Int, a), IntMap a) forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE minViewWithKey #-} filter :: (a -> Bool) -> IntLikeMap x a -> IntLikeMap x a filter :: forall a x. (a -> Bool) -> IntLikeMap x a -> IntLikeMap x a filter a -> Bool f = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntLikeMap x a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntLikeMap x a forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> Bool) -> IntMap a -> IntMap a forall a. (a -> Bool) -> IntMap a -> IntMap a IntMap.filter a -> Bool f (IntMap a -> IntMap a) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap a forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE filter #-} restrictKeys :: IntLikeMap x a -> IntLikeSet x -> IntLikeMap x a restrictKeys :: forall x a. IntLikeMap x a -> IntLikeSet x -> IntLikeMap x a restrictKeys IntLikeMap x a m IntLikeSet x s = IntMap a -> IntLikeMap x a forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap a -> IntSet -> IntMap a forall a. IntMap a -> IntSet -> IntMap a IntMap.restrictKeys (IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap IntLikeMap x a m) (IntLikeSet x -> IntSet forall x. IntLikeSet x -> IntSet unIntLikeSet IntLikeSet x s)) {-# INLINE restrictKeys #-} map :: (a -> b) -> IntLikeMap x a -> IntLikeMap x b map :: forall a b x. (a -> b) -> IntLikeMap x a -> IntLikeMap x b map a -> b f = IntMap b -> IntLikeMap x b forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap b -> IntLikeMap x b) -> (IntLikeMap x a -> IntMap b) -> IntLikeMap x a -> IntLikeMap x b forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> b) -> IntMap a -> IntMap b forall a b. (a -> b) -> IntMap a -> IntMap b IntMap.map a -> b f (IntMap a -> IntMap b) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap b forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE map #-} insertState :: Coercible x Int => (Maybe a -> b) -> x -> a -> IntLikeMap x a -> (b, IntLikeMap x a) insertState :: forall x a b. Coercible x Int => (Maybe a -> b) -> x -> a -> IntLikeMap x a -> (b, IntLikeMap x a) insertState Maybe a -> b f x x a a = (b, IntMap a) -> (b, IntLikeMap x a) forall a b. Coercible a b => a -> b coerce ((b, IntMap a) -> (b, IntLikeMap x a)) -> (IntLikeMap x a -> (b, IntMap a)) -> IntLikeMap x a -> (b, IntLikeMap x a) forall b c a. (b -> c) -> (a -> b) -> a -> c . (Maybe a -> (b, Maybe a)) -> Int -> IntMap a -> (b, IntMap a) forall (f :: * -> *) a. Functor f => (Maybe a -> f (Maybe a)) -> Int -> IntMap a -> f (IntMap a) IntMap.alterF (\Maybe a m -> (Maybe a -> b f Maybe a m, a -> Maybe a forall a. a -> Maybe a Just a a)) (x -> Int forall a b. Coercible a b => a -> b coerce x x) (IntMap a -> (b, IntMap a)) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> (b, IntMap a) forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE insertState #-} mapWithKey :: Coercible x Int => (x -> a -> b) -> IntLikeMap x a -> IntLikeMap x b mapWithKey :: forall x a b. Coercible x Int => (x -> a -> b) -> IntLikeMap x a -> IntLikeMap x b mapWithKey x -> a -> b f = IntMap b -> IntLikeMap x b forall x a. IntMap a -> IntLikeMap x a IntLikeMap (IntMap b -> IntLikeMap x b) -> (IntLikeMap x a -> IntMap b) -> IntLikeMap x a -> IntLikeMap x b forall b c a. (b -> c) -> (a -> b) -> a -> c . (Int -> a -> b) -> IntMap a -> IntMap b forall a b. (Int -> a -> b) -> IntMap a -> IntMap b IntMap.mapWithKey ((x -> a -> b) -> Int -> a -> b forall a b. Coercible a b => a -> b coerce x -> a -> b f) (IntMap a -> IntMap b) -> (IntLikeMap x a -> IntMap a) -> IntLikeMap x a -> IntMap b forall b c a. (b -> c) -> (a -> b) -> a -> c . IntLikeMap x a -> IntMap a forall x a. IntLikeMap x a -> IntMap a unIntLikeMap {-# INLINE mapWithKey #-}