{-# LANGUAGE CPP #-}{-# LANGUAGE DeriveDataTypeable #-}{-# LANGUAGE DeriveFunctor #-}{-# LANGUAGE GADTs #-}{-# LANGUAGE MultiParamTypeClasses #-}{-# LANGUAGE TemplateHaskellQuotes #-}{-# LANGUAGE TypeFamilies #-}-- |-- An abstract interface for maps from JSON keys to values.---- @since 2.0.0.0moduleData.Aeson.KeyMap(-- * Map TypeKeyMap ,-- * Querynull ,lookup ,(!?) ,size ,member ,-- * Constructionempty ,singleton ,-- ** Insertioninsert ,insertWith ,-- * Deletiondelete ,-- * UpdatealterF ,-- * Combinedifference ,union ,unionWith ,unionWithKey ,intersection ,intersectionWith ,intersectionWithKey ,alignWith ,alignWithKey ,-- * ListsfromList ,fromListWith ,toList ,toAscList ,elems ,-- * MapsfromHashMap ,toHashMap ,fromHashMapText ,toHashMapText ,coercionToHashMap ,fromMap ,toMap ,fromMapText ,toMapText ,coercionToMap ,-- * Traversal-- ** Mapmap ,mapWithKey ,mapKeyVal ,traverse ,traverseWithKey ,-- * Foldsfoldr ,foldr' ,foldl ,foldl' ,foldMapWithKey ,foldrWithKey ,-- * Conversionskeys ,-- * Filterfilter ,filterWithKey ,mapMaybe ,mapMaybeWithKey ,-- * Key TypeKey ,)where-- Import stuff from Prelude explicitlyimportPrelude(Eq(..),Ord((>)),Int,Bool(..),Maybe(..))importPrelude((.),($))importPrelude(Functor(fmap),Monad(..))importPrelude(Show,showsPrec,showParen,shows,showString)importControl.Applicative(Applicative)importControl.DeepSeq(NFData(..))importData.Aeson.Key (Key )importData.Bifunctor(first)importData.Data(Data)importData.Hashable(Hashable(..))importData.HashMap.Strict(HashMap)importData.Map(Map)importData.Monoid(Monoid(mempty,mappend))importData.Semigroup(Semigroup((<>)))importData.Text(Text)importData.These(These(..))importData.Type.Coercion(Coercion(..))importData.Typeable(Typeable)importText.Read(Read(..),Lexeme(..),readListPrecDefault,prec,lexP,parens)importqualifiedData.Aeson.Key asKeyimportqualifiedData.FoldableasFimportqualifiedData.TraversableasTimportqualifiedData.HashMap.StrictasHimportqualifiedData.ListasLimportqualifiedData.Map.StrictasMimportqualifiedLanguage.Haskell.TH.SyntaxasTHimportqualifiedData.Foldable.WithIndexasWI(FoldableWithIndex(..))importqualifiedData.Functor.WithIndexasWI(FunctorWithIndex(..))importqualifiedData.Traversable.WithIndexasWI(TraversableWithIndex(..))importqualifiedData.SemialignasSAimportqualifiedData.Semialign.IndexedasSAIimportqualifiedGHC.ExtsimportqualifiedTest.QuickCheckasQCimportqualifiedWitherableasW
#ifdef USE_ORDEREDMAP
--------------------------------------------------------------------------------- Map--------------------------------------------------------------------------------- | A map from JSON key type 'Key' to 'v'.newtypeKeyMap v =KeyMap {forall v. KeyMap v -> Map Key v
unKeyMap ::MapKey v }deriving(KeyMap v -> KeyMap v -> Bool
forall v. Eq v => KeyMap v -> KeyMap v -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: KeyMap v -> KeyMap v -> Bool
$c/= :: forall v. Eq v => KeyMap v -> KeyMap v -> Bool
== :: KeyMap v -> KeyMap v -> Bool
$c== :: forall v. Eq v => KeyMap v -> KeyMap v -> Bool
Eq,KeyMap v -> KeyMap v -> Bool
KeyMap v -> KeyMap v -> Ordering
KeyMap v -> KeyMap v -> KeyMap v
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 {v}. Ord v => Eq (KeyMap v)
forall v. Ord v => KeyMap v -> KeyMap v -> Bool
forall v. Ord v => KeyMap v -> KeyMap v -> Ordering
forall v. Ord v => KeyMap v -> KeyMap v -> KeyMap v
min :: KeyMap v -> KeyMap v -> KeyMap v
$cmin :: forall v. Ord v => KeyMap v -> KeyMap v -> KeyMap v
max :: KeyMap v -> KeyMap v -> KeyMap v
$cmax :: forall v. Ord v => KeyMap v -> KeyMap v -> KeyMap v
>= :: KeyMap v -> KeyMap v -> Bool
$c>= :: forall v. Ord v => KeyMap v -> KeyMap v -> Bool
> :: KeyMap v -> KeyMap v -> Bool
$c> :: forall v. Ord v => KeyMap v -> KeyMap v -> Bool
<= :: KeyMap v -> KeyMap v -> Bool
$c<= :: forall v. Ord v => KeyMap v -> KeyMap v -> Bool
< :: KeyMap v -> KeyMap v -> Bool
$c< :: forall v. Ord v => KeyMap v -> KeyMap v -> Bool
compare :: KeyMap v -> KeyMap v -> Ordering
$ccompare :: forall v. Ord v => KeyMap v -> KeyMap v -> Ordering
Ord,Typeable,KeyMap v -> DataType
KeyMap v -> Constr
forall {v}. Data v => Typeable (KeyMap v)
forall v. Data v => KeyMap v -> DataType
forall v. Data v => KeyMap v -> Constr
forall v.
Data v =>
(forall b. Data b => b -> b) -> KeyMap v -> KeyMap v
forall v u.
Data v =>
Int -> (forall d. Data d => d -> u) -> KeyMap v -> u
forall v u.
Data v =>
(forall d. Data d => d -> u) -> KeyMap v -> [u]
forall v r r'.
Data v =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> KeyMap v -> r
forall v r r'.
Data v =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> KeyMap v -> r
forall v (m :: * -> *).
(Data v, Monad m) =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
forall v (m :: * -> *).
(Data v, MonadPlus m) =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
forall v (c :: * -> *).
Data v =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (KeyMap v)
forall v (c :: * -> *).
Data v =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> KeyMap v -> c (KeyMap v)
forall v (t :: * -> *) (c :: * -> *).
(Data v, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (KeyMap v))
forall v (t :: * -> * -> *) (c :: * -> *).
(Data v, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (KeyMap v))
forall a.
Typeable a
-> (forall (c :: * -> *).
 (forall d b. Data d => c (d -> b) -> d -> c b)
 -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
 (forall b r. Data b => c (b -> r) -> c r)
 -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
 Typeable t =>
 (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
 Typeable t =>
 (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
 (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
 (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
 Monad m =>
 (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
 MonadPlus m =>
 (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
 MonadPlus m =>
 (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (KeyMap v)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> KeyMap v -> c (KeyMap v)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (KeyMap v))
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
$cgmapMo :: forall v (m :: * -> *).
(Data v, MonadPlus m) =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
$cgmapMp :: forall v (m :: * -> *).
(Data v, MonadPlus m) =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
$cgmapM :: forall v (m :: * -> *).
(Data v, Monad m) =>
(forall d. Data d => d -> m d) -> KeyMap v -> m (KeyMap v)
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> KeyMap v -> u
$cgmapQi :: forall v u.
Data v =>
Int -> (forall d. Data d => d -> u) -> KeyMap v -> u
gmapQ :: forall u. (forall d. Data d => d -> u) -> KeyMap v -> [u]
$cgmapQ :: forall v u.
Data v =>
(forall d. Data d => d -> u) -> KeyMap v -> [u]
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> KeyMap v -> r
$cgmapQr :: forall v r r'.
Data v =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> KeyMap v -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> KeyMap v -> r
$cgmapQl :: forall v r r'.
Data v =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> KeyMap v -> r
gmapT :: (forall b. Data b => b -> b) -> KeyMap v -> KeyMap v
$cgmapT :: forall v.
Data v =>
(forall b. Data b => b -> b) -> KeyMap v -> KeyMap v
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (KeyMap v))
$cdataCast2 :: forall v (t :: * -> * -> *) (c :: * -> *).
(Data v, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (KeyMap v))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (KeyMap v))
$cdataCast1 :: forall v (t :: * -> *) (c :: * -> *).
(Data v, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (KeyMap v))
dataTypeOf :: KeyMap v -> DataType
$cdataTypeOf :: forall v. Data v => KeyMap v -> DataType
toConstr :: KeyMap v -> Constr
$ctoConstr :: forall v. Data v => KeyMap v -> Constr
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (KeyMap v)
$cgunfold :: forall v (c :: * -> *).
Data v =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (KeyMap v)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> KeyMap v -> c (KeyMap v)
$cgfoldl :: forall v (c :: * -> *).
Data v =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> KeyMap v -> c (KeyMap v)
Data,forall a b. a -> KeyMap b -> KeyMap a
forall a b. (a -> b) -> KeyMap a -> KeyMap b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: forall a b. a -> KeyMap b -> KeyMap a
$c<$ :: forall a b. a -> KeyMap b -> KeyMap a
fmap :: forall a b. (a -> b) -> KeyMap a -> KeyMap b
$cfmap :: forall a b. (a -> b) -> KeyMap a -> KeyMap b
Functor)-- | Construct an empty map.empty ::KeyMap v empty :: forall v. KeyMap v
empty =forall v. Map Key v -> KeyMap v
KeyMap forall k a. Map k a
M.empty-- | Is the map empty?null ::KeyMap v ->Boolnull :: forall v. KeyMap v -> Bool
null =forall k a. Map k a -> Bool
M.nullforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Return the number of key-value mappings in this map.size ::KeyMap v ->Intsize :: forall v. KeyMap v -> Int
size =forall k a. Map k a -> Int
M.sizeforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Construct a map with a single element.singleton ::Key ->v ->KeyMap v singleton :: forall v. Key -> v -> KeyMap v
singleton Key
k v
v =forall v. Map Key v -> KeyMap v
KeyMap (forall k a. k -> a -> Map k a
M.singletonKey
k v
v )-- | Is the key a member of the map?member ::Key ->KeyMap a ->Boolmember :: forall a. Key -> KeyMap a -> Bool
member Key
t (KeyMap Map Key a
m )=forall k a. Ord k => k -> Map k a -> Bool
M.memberKey
t Map Key a
m -- | Remove the mapping for the specified key from this map if present.delete ::Key ->KeyMap v ->KeyMap v delete :: forall v. Key -> KeyMap v -> KeyMap v
delete Key
k (KeyMap Map Key v
m )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a. Ord k => k -> Map k a -> Map k a
M.deleteKey
k Map Key v
m )-- | 'alterF' can be used to insert, delete, or update a value in a map.alterF ::Functorf =>(Maybev ->f (Maybev ))->Key ->KeyMap v ->f (KeyMap v )
#if MIN_VERSION_containers(0,5,8)
alterF :: forall (f :: * -> *) v.
Functor f =>
(Maybe v -> f (Maybe v)) -> Key -> KeyMap v -> f (KeyMap v)
alterF Maybe v -> f (Maybe v)
f Key
k =forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmapforall v. Map Key v -> KeyMap v
KeyMap forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall (f :: * -> *) k a.
(Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)
M.alterFMaybe v -> f (Maybe v)
f Key
k forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap 
#else
alterFfkm=fmapg(fmv)wheregr=caserofNothing->casemvofNothing->mJust_->deletekmJustv'->insertkv'mmv=lookupkm
#endif
-- | Return the value to which the specified key is mapped,-- or Nothing if this map contains no mapping for the key.lookup ::Key ->KeyMap v ->Maybev lookup :: forall v. Key -> KeyMap v -> Maybe v
lookup Key
t KeyMap v
tm =forall k a. Ord k => k -> Map k a -> Maybe a
M.lookupKey
t (forall v. KeyMap v -> Map Key v
unKeyMap KeyMap v
tm )-- | Associate the specified value with the specified key-- in this map. If this map previously contained a mapping-- for the key, the old value is replaced.insert ::Key ->v ->KeyMap v ->KeyMap v insert :: forall v. Key -> v -> KeyMap v -> KeyMap v
insert Key
k v
v KeyMap v
tm =forall v. Map Key v -> KeyMap v
KeyMap (forall k a. Ord k => k -> a -> Map k a -> Map k a
M.insertKey
k v
v (forall v. KeyMap v -> Map Key v
unKeyMap KeyMap v
tm ))-- | Insert with a function combining new and old values, taken in that order.---- @since 2.1.1.0insertWith ::(a ->a ->a )->Key ->a ->KeyMap a ->KeyMap a insertWith :: forall a. (a -> a -> a) -> Key -> a -> KeyMap a -> KeyMap a
insertWith a -> a -> a
f Key
k a
v KeyMap a
m =forall v. Map Key v -> KeyMap v
KeyMap (forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
M.insertWitha -> a -> a
f Key
k a
v (forall v. KeyMap v -> Map Key v
unKeyMap KeyMap a
m ))-- | Map a function over all values in the map.map ::(a ->b )->KeyMap a ->KeyMap b map :: forall a b. (a -> b) -> KeyMap a -> KeyMap b
map =forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap-- | Map a function over all values in the map.---- @since 2.1.0.0mapWithKey ::(Key ->a ->b )->KeyMap a ->KeyMap b mapWithKey :: forall a b. (Key -> a -> b) -> KeyMap a -> KeyMap b
mapWithKey Key -> a -> b
f (KeyMap Map Key a
m )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a b. (k -> a -> b) -> Map k a -> Map k b
M.mapWithKeyKey -> a -> b
f Map Key a
m )foldMapWithKey ::Monoidm =>(Key ->a ->m )->KeyMap a ->m foldMapWithKey :: forall m a. Monoid m => (Key -> a -> m) -> KeyMap a -> m
foldMapWithKey Key -> a -> m
f (KeyMap Map Key a
m )=forall m k a. Monoid m => (k -> a -> m) -> Map k a -> m
M.foldMapWithKeyKey -> a -> m
f Map Key a
m foldr ::(a ->b ->b )->b ->KeyMap a ->b foldr :: forall a b. (a -> b -> b) -> b -> KeyMap a -> b
foldr a -> b -> b
f b
z (KeyMap Map Key a
m )=forall a b k. (a -> b -> b) -> b -> Map k a -> b
M.foldra -> b -> b
f b
z Map Key a
m foldr' ::(a ->b ->b )->b ->KeyMap a ->b foldr' :: forall a b. (a -> b -> b) -> b -> KeyMap a -> b
foldr' a -> b -> b
f b
z (KeyMap Map Key a
m )=forall a b k. (a -> b -> b) -> b -> Map k a -> b
M.foldr'a -> b -> b
f b
z Map Key a
m foldl ::(b ->a ->b )->b ->KeyMap a ->b foldl :: forall b a. (b -> a -> b) -> b -> KeyMap a -> b
foldl b -> a -> b
f b
z (KeyMap Map Key a
m )=forall a b k. (a -> b -> a) -> a -> Map k b -> a
M.foldlb -> a -> b
f b
z Map Key a
m foldl' ::(b ->a ->b )->b ->KeyMap a ->b foldl' :: forall b a. (b -> a -> b) -> b -> KeyMap a -> b
foldl' b -> a -> b
f b
z (KeyMap Map Key a
m )=forall a b k. (a -> b -> a) -> a -> Map k b -> a
M.foldl'b -> a -> b
f b
z Map Key a
m -- | Reduce this map by applying a binary operator to all-- elements, using the given starting value (typically the-- right-identity of the operator).foldrWithKey ::(Key ->v ->a ->a )->a ->KeyMap v ->a foldrWithKey :: forall v a. (Key -> v -> a -> a) -> a -> KeyMap v -> a
foldrWithKey Key -> v -> a -> a
f a
a =forall k a b. (k -> a -> b -> b) -> b -> Map k a -> b
M.foldrWithKeyKey -> v -> a -> a
f a
a forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Perform an Applicative action for each key-value pair-- in a 'KeyMap' and produce a 'KeyMap' of all the results.traverse ::Applicativef =>(v1 ->f v2 )->KeyMap v1 ->f (KeyMap v2 )traverse :: forall (f :: * -> *) v1 v2.
Applicative f =>
(v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2)
traverse v1 -> f v2
f =forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmapforall v. Map Key v -> KeyMap v
KeyMap forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
T.traversev1 -> f v2
f forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Perform an Applicative action for each key-value pair-- in a 'KeyMap' and produce a 'KeyMap' of all the results.traverseWithKey ::Applicativef =>(Key ->v1 ->f v2 )->KeyMap v1 ->f (KeyMap v2 )traverseWithKey :: forall (f :: * -> *) v1 v2.
Applicative f =>
(Key -> v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2)
traverseWithKey Key -> v1 -> f v2
f =forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmapforall v. Map Key v -> KeyMap v
KeyMap forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall (t :: * -> *) k a b.
Applicative t =>
(k -> a -> t b) -> Map k a -> t (Map k b)
M.traverseWithKeyKey -> v1 -> f v2
f forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Construct a map from a list of elements. Uses the-- provided function, f, to merge duplicate entries with-- (f newVal oldVal).fromListWith ::(v ->v ->v )->[(Key ,v )]->KeyMap v fromListWith :: forall v. (v -> v -> v) -> [(Key, v)] -> KeyMap v
fromListWith v -> v -> v
op =forall v. Map Key v -> KeyMap v
KeyMap forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
M.fromListWithv -> v -> v
op -- | Construct a map with the supplied mappings. If the-- list contains duplicate mappings, the later mappings take-- precedence.---- >>> fromList [("a", 'x'), ("a", 'y')]-- fromList [("a",'y')]--fromList ::[(Key ,v )]->KeyMap v fromList :: forall v. [(Key, v)] -> KeyMap v
fromList =forall v. Map Key v -> KeyMap v
KeyMap forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall k a. Ord k => [(k, a)] -> Map k a
M.fromList-- | Return a list of this map's keys and elements.---- The order is not stable. Use 'toAscList' for stable ordering.toList ::KeyMap v ->[(Key ,v )]toList :: forall v. KeyMap v -> [(Key, v)]
toList =forall k a. Map k a -> [(k, a)]
M.toListforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Return a list of this map' elements.---- @since 2.0.3.0elems ::KeyMap v ->[v ]elems :: forall v. KeyMap v -> [v]
elems =forall k a. Map k a -> [a]
M.elemsforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Return a list of this map's elements in ascending order-- based of the textual key.toAscList ::KeyMap v ->[(Key ,v )]toAscList :: forall v. KeyMap v -> [(Key, v)]
toAscList =forall k a. Map k a -> [(k, a)]
M.toAscListforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Difference of two maps. Return elements of the first-- map not existing in the second.difference ::KeyMap v ->KeyMap v' ->KeyMap v difference :: forall v v'. KeyMap v -> KeyMap v' -> KeyMap v
difference KeyMap v
tm1 KeyMap v'
tm2 =forall v. Map Key v -> KeyMap v
KeyMap (forall k a b. Ord k => Map k a -> Map k b -> Map k a
M.difference(forall v. KeyMap v -> Map Key v
unKeyMap KeyMap v
tm1 )(forall v. KeyMap v -> Map Key v
unKeyMap KeyMap v'
tm2 ))-- The (left-biased) union of two maps. It prefers the first map when duplicate-- keys are encountered, i.e. ('union' == 'unionWith' 'const').union ::KeyMap v ->KeyMap v ->KeyMap v union :: forall v. KeyMap v -> KeyMap v -> KeyMap v
union (KeyMap Map Key v
x )(KeyMap Map Key v
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a. Ord k => Map k a -> Map k a -> Map k a
M.unionMap Key v
x Map Key v
y )-- | The union with a combining function.unionWith ::(v ->v ->v )->KeyMap v ->KeyMap v ->KeyMap v unionWith :: forall v. (v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v
unionWith v -> v -> v
f (KeyMap Map Key v
x )(KeyMap Map Key v
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a. Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
M.unionWithv -> v -> v
f Map Key v
x Map Key v
y )-- | The union with a combining function.unionWithKey ::(Key ->v ->v ->v )->KeyMap v ->KeyMap v ->KeyMap v unionWithKey :: forall v. (Key -> v -> v -> v) -> KeyMap v -> KeyMap v -> KeyMap v
unionWithKey Key -> v -> v -> v
f (KeyMap Map Key v
x )(KeyMap Map Key v
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a.
Ord k =>
(k -> a -> a -> a) -> Map k a -> Map k a -> Map k a
M.unionWithKeyKey -> v -> v -> v
f Map Key v
x Map Key v
y )-- | The (left-biased) intersection of two maps (based on keys).intersection ::KeyMap a ->KeyMap b ->KeyMap a intersection :: forall v v'. KeyMap v -> KeyMap v' -> KeyMap v
intersection (KeyMap Map Key a
x )(KeyMap Map Key b
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a b. Ord k => Map k a -> Map k b -> Map k a
M.intersectionMap Key a
x Map Key b
y )-- | The intersection with a combining function.intersectionWith ::(a ->b ->c )->KeyMap a ->KeyMap b ->KeyMap c intersectionWith :: forall a b c. (a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
intersectionWith a -> b -> c
f (KeyMap Map Key a
x )(KeyMap Map Key b
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a b c.
Ord k =>
(a -> b -> c) -> Map k a -> Map k b -> Map k c
M.intersectionWitha -> b -> c
f Map Key a
x Map Key b
y )-- | The intersection with a combining function.intersectionWithKey ::(Key ->a ->b ->c )->KeyMap a ->KeyMap b ->KeyMap c intersectionWithKey :: forall a b c.
(Key -> a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
intersectionWithKey Key -> a -> b -> c
f (KeyMap Map Key a
x )(KeyMap Map Key b
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a b c.
Ord k =>
(k -> a -> b -> c) -> Map k a -> Map k b -> Map k c
M.intersectionWithKeyKey -> a -> b -> c
f Map Key a
x Map Key b
y )-- | Return a list of this map's keys.keys ::KeyMap v ->[Key ]keys :: forall v. KeyMap v -> [Key]
keys =forall k a. Map k a -> [k]
M.keysforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> Map Key v
unKeyMap -- | Convert a 'KeyMap' to a 'HashMap'.toHashMap ::KeyMap v ->HashMapKey v toHashMap :: forall v. KeyMap v -> HashMap Key v
toHashMap =forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
H.fromListforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> [(Key, v)]
toList -- | Convert a 'HashMap' to a 'KeyMap'.fromHashMap ::HashMapKey v ->KeyMap v fromHashMap :: forall v. HashMap Key v -> KeyMap v
fromHashMap =forall v. [(Key, v)] -> KeyMap v
fromList forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall k v. HashMap k v -> [(k, v)]
H.toList-- | Convert a 'KeyMap' to a 'Map'.toMap ::KeyMap v ->MapKey v toMap :: forall v. KeyMap v -> Map Key v
toMap =forall v. KeyMap v -> Map Key v
unKeyMap -- | Convert a 'Map' to a 'KeyMap'.fromMap ::MapKey v ->KeyMap v fromMap :: forall v. Map Key v -> KeyMap v
fromMap =forall v. Map Key v -> KeyMap v
KeyMap coercionToHashMap ::Maybe(Coercion(HashMapKey v )(KeyMap v ))coercionToHashMap :: forall v. Maybe (Coercion (HashMap Key v) (KeyMap v))
coercionToHashMap =forall a. Maybe a
Nothing{-# INLINEcoercionToHashMap #-}coercionToMap ::Maybe(Coercion(MapKey v )(KeyMap v ))coercionToMap :: forall v. Maybe (Coercion (Map Key v) (KeyMap v))
coercionToMap =forall a. a -> Maybe a
Justforall {k} (a :: k) (b :: k). Coercible a b => Coercion a b
Coercion{-# INLINEcoercionToMap #-}-- | Transform the keys and values of a 'KeyMap'.mapKeyVal ::(Key ->Key )->(v1 ->v2 )->KeyMap v1 ->KeyMap v2 mapKeyVal :: forall v1 v2. (Key -> Key) -> (v1 -> v2) -> KeyMap v1 -> KeyMap v2
mapKeyVal Key -> Key
fk v1 -> v2
kv =forall v a. (Key -> v -> a -> a) -> a -> KeyMap v -> a
foldrWithKey (\Key
k v1
v ->forall v. Key -> v -> KeyMap v -> KeyMap v
insert (Key -> Key
fk Key
k )(v1 -> v2
kv v1
v ))forall v. KeyMap v
empty {-# INLINEmapKeyVal #-}-- | Filter all keys/values that satisfy some predicate.filter ::(v ->Bool)->KeyMap v ->KeyMap v filter :: forall v. (v -> Bool) -> KeyMap v -> KeyMap v
filter v -> Bool
f (KeyMap Map Key v
m )=forall v. Map Key v -> KeyMap v
KeyMap (forall a k. (a -> Bool) -> Map k a -> Map k a
M.filterv -> Bool
f Map Key v
m )-- | Filter all keys/values that satisfy some predicate.filterWithKey ::(Key ->v ->Bool)->KeyMap v ->KeyMap v filterWithKey :: forall v. (Key -> v -> Bool) -> KeyMap v -> KeyMap v
filterWithKey Key -> v -> Bool
f (KeyMap Map Key v
m )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a. (k -> a -> Bool) -> Map k a -> Map k a
M.filterWithKeyKey -> v -> Bool
f Map Key v
m )-- | Map values and collect the Just results.mapMaybe ::(a ->Maybeb )->KeyMap a ->KeyMap b mapMaybe :: forall a b. (a -> Maybe b) -> KeyMap a -> KeyMap b
mapMaybe a -> Maybe b
f (KeyMap Map Key a
m )=forall v. Map Key v -> KeyMap v
KeyMap (forall a b k. (a -> Maybe b) -> Map k a -> Map k b
M.mapMaybea -> Maybe b
f Map Key a
m )-- | Map values and collect the Just results.mapMaybeWithKey ::(Key ->v ->Maybeu )->KeyMap v ->KeyMap u mapMaybeWithKey :: forall v u. (Key -> v -> Maybe u) -> KeyMap v -> KeyMap u
mapMaybeWithKey Key -> v -> Maybe u
f (KeyMap Map Key v
m )=forall v. Map Key v -> KeyMap v
KeyMap (forall k a b. (k -> a -> Maybe b) -> Map k a -> Map k b
M.mapMaybeWithKeyKey -> v -> Maybe u
f Map Key v
m )
#else
--------------------------------------------------------------------------------- HashMap-------------------------------------------------------------------------------importData.List(sortBy)importData.Ord(comparing)importPrelude(fst)-- | A map from JSON key type 'Key' to 'v'.newtypeKeyMapv=KeyMap{unKeyMap::HashMapKeyv}deriving(Eq,Ord,Typeable,Data,Functor)-- | Construct an empty map.empty::KeyMapvempty=KeyMapH.empty-- | Is the map empty?null::KeyMapv->Boolnull=H.null.unKeyMap-- | Return the number of key-value mappings in this map.size::KeyMapv->Intsize=H.size.unKeyMap-- | Construct a map with a single element.singleton::Key->v->KeyMapvsingletonkv=KeyMap(H.singletonkv)-- | Is the key a member of the map?member::Key->KeyMapa->Boolmembert(KeyMapm)=H.membertm-- | Remove the mapping for the specified key from this map if present.delete::Key->KeyMapv->KeyMapvdeletek(KeyMapm)=KeyMap(H.deletekm)-- | 'alterF' can be used to insert, delete, or update a value in a map.alterF::Functorf=>(Maybev->f(Maybev))->Key->KeyMapv->f(KeyMapv)alterFfk=fmapKeyMap.H.alterFfk.unKeyMap-- | Return the value to which the specified key is mapped,-- or Nothing if this map contains no mapping for the key.lookup::Key->KeyMapv->Maybevlookupttm=H.lookupt(unKeyMaptm)-- | Associate the specified value with the specified key-- in this map. If this map previously contained a mapping-- for the key, the old value is replaced.insert::Key->v->KeyMapv->KeyMapvinsertkvtm=KeyMap(H.insertkv(unKeyMaptm))-- | Insert with a function combining new and old values, taken in that order.---- @since 2.1.1.0insertWith::(a->a->a)->Key->a->KeyMapa->KeyMapainsertWithfkvm=KeyMap(H.insertWithfkv(unKeyMapm))-- | Map a function over all values in the map.map::(a->b)->KeyMapa->KeyMapbmap=fmap-- | Map a function over all values in the map.---- @since 2.1.0.0mapWithKey::(Key->a->b)->KeyMapa->KeyMapbmapWithKeyf(KeyMapm)=KeyMap(H.mapWithKeyfm)foldMapWithKey::Monoidm=>(Key->a->m)->KeyMapa->mfoldMapWithKeyf(KeyMapm)=H.foldMapWithKeyfmfoldr::(a->b->b)->b->KeyMapa->bfoldrfz(KeyMapm)=H.foldrfzmfoldr'::(a->b->b)->b->KeyMapa->bfoldr'fz(KeyMapm)=H.foldr'fzmfoldl::(b->a->b)->b->KeyMapa->bfoldlfz(KeyMapm)=H.foldlfzmfoldl'::(b->a->b)->b->KeyMapa->bfoldl'fz(KeyMapm)=H.foldl'fzm-- | Reduce this map by applying a binary operator to all-- elements, using the given starting value (typically the-- right-identity of the operator).foldrWithKey::(Key->v->a->a)->a->KeyMapv->afoldrWithKeyfa=H.foldrWithKeyfa.unKeyMap-- | Perform an Applicative action for each key-value pair-- in a 'KeyMap' and produce a 'KeyMap' of all the results.traverse::Applicativef=>(v1->fv2)->KeyMapv1->f(KeyMapv2)traversef=fmapKeyMap.T.traversef.unKeyMap-- | Perform an Applicative action for each key-value pair-- in a 'KeyMap' and produce a 'KeyMap' of all the results.traverseWithKey::Applicativef=>(Key->v1->fv2)->KeyMapv1->f(KeyMapv2)traverseWithKeyf=fmapKeyMap.H.traverseWithKeyf.unKeyMap-- | Construct a map from a list of elements. Uses the-- provided function, f, to merge duplicate entries with-- (f newVal oldVal).fromListWith::(v->v->v)->[(Key,v)]->KeyMapvfromListWithop=KeyMap.H.fromListWithop-- | Construct a map with the supplied mappings. If the-- list contains duplicate mappings, the later mappings take-- precedence.fromList::[(Key,v)]->KeyMapvfromList=KeyMap.H.fromList-- | Return a list of this map's elements.---- The order is not stable. Use 'toAscList' for stable ordering.toList::KeyMapv->[(Key,v)]toList=H.toList.unKeyMap-- | Return a list of this map' elements.---- @since 2.0.3.0elems::KeyMapv->[v]elems=H.elems.unKeyMap-- | Return a list of this map's elements in ascending order-- based of the textual key.toAscList::KeyMapv->[(Key,v)]toAscList=sortBy(comparingfst).toList-- | Difference of two maps. Return elements of the first-- map not existing in the second.difference::KeyMapv->KeyMapv'->KeyMapvdifferencetm1tm2=KeyMap(H.difference(unKeyMaptm1)(unKeyMaptm2))-- The (left-biased) union of two maps. It prefers the first map when duplicate-- keys are encountered, i.e. ('union' == 'unionWith' 'const').union::KeyMapv->KeyMapv->KeyMapvunion(KeyMapx)(KeyMapy)=KeyMap(H.unionxy)-- | The union with a combining function.unionWith::(v->v->v)->KeyMapv->KeyMapv->KeyMapvunionWithf(KeyMapx)(KeyMapy)=KeyMap(H.unionWithfxy)-- | The union with a combining function.unionWithKey::(Key->v->v->v)->KeyMapv->KeyMapv->KeyMapvunionWithKeyf(KeyMapx)(KeyMapy)=KeyMap(H.unionWithKeyfxy)-- | The (left-biased) intersection of two maps (based on keys).intersection::KeyMapa->KeyMapb->KeyMapaintersection(KeyMapx)(KeyMapy)=KeyMap(H.intersectionxy)-- | The intersection with a combining function.intersectionWith::(a->b->c)->KeyMapa->KeyMapb->KeyMapcintersectionWithf(KeyMapx)(KeyMapy)=KeyMap(H.intersectionWithfxy)-- | The intersection with a combining function.intersectionWithKey::(Key->a->b->c)->KeyMapa->KeyMapb->KeyMapcintersectionWithKeyf(KeyMapx)(KeyMapy)=KeyMap(H.intersectionWithKeyfxy)-- | Return a list of this map's keys.keys::KeyMapv->[Key]keys=H.keys.unKeyMap-- | Convert a 'KeyMap' to a 'HashMap'.toHashMap::KeyMapv->HashMapKeyvtoHashMap=unKeyMap-- | Convert a 'HashMap' to a 'KeyMap'.fromHashMap::HashMapKeyv->KeyMapvfromHashMap=KeyMap-- | Convert a 'KeyMap' to a 'Map'.toMap::KeyMapv->MapKeyvtoMap=M.fromList.toList-- | Convert a 'Map' to a 'KeyMap'.fromMap::MapKeyv->KeyMapvfromMap=fromList.M.toListcoercionToHashMap::Maybe(Coercion(HashMapKeyv)(KeyMapv))coercionToHashMap=JustCoercion{-# INLINEcoercionToHashMap#-}coercionToMap::Maybe(Coercion(MapKeyv)(KeyMapv))coercionToMap=Nothing{-# INLINEcoercionToMap#-}-- | Transform the keys and values of a 'KeyMap'.mapKeyVal::(Key->Key)->(v1->v2)->KeyMapv1->KeyMapv2mapKeyValfkkv=foldrWithKey(\kv->insert(fkk)(kvv))empty{-# INLINEmapKeyVal#-}-- | Filter all keys/values that satisfy some predicate.filter::(v->Bool)->KeyMapv->KeyMapvfilterf(KeyMapm)=KeyMap(H.filterfm)-- | Filter all keys/values that satisfy some predicate.filterWithKey::(Key->v->Bool)->KeyMapv->KeyMapvfilterWithKeyf(KeyMapm)=KeyMap(H.filterWithKeyfm)-- | Map values and collect the Just results.mapMaybe::(a->Maybeb)->KeyMapa->KeyMapbmapMaybef(KeyMapm)=KeyMap(H.mapMaybefm)-- | Map values and collect the Just results.mapMaybeWithKey::(Key->v->Maybeu)->KeyMapv->KeyMapumapMaybeWithKeyf(KeyMapm)=KeyMap(H.mapMaybeWithKeyfm)
#endif
--------------------------------------------------------------------------------- combinators using existing abstractions--------------------------------------------------------------------------------- | Return the value to which the specified key is mapped,-- or Nothing if this map contains no mapping for the key.---- This is a flipped version of 'lookup'.---- @since 2.1.1.0--(!?) ::KeyMap v ->Key ->Maybev !? :: forall v. KeyMap v -> Key -> Maybe v
(!?) KeyMap v
m Key
k =forall v. Key -> KeyMap v -> Maybe v
lookup Key
k KeyMap v
m -- | Generalized union with combining function.alignWith ::(Thesea b ->c )->KeyMap a ->KeyMap b ->KeyMap c alignWith :: forall a b c. (These a b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
alignWith These a b -> c
f (KeyMap Map Key a
x )(KeyMap Map Key b
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall (f :: * -> *) a b c.
Semialign f =>
(These a b -> c) -> f a -> f b -> f c
SA.alignWithThese a b -> c
f Map Key a
x Map Key b
y )-- | Generalized union with combining function.alignWithKey ::(Key ->Thesea b ->c )->KeyMap a ->KeyMap b ->KeyMap c alignWithKey :: forall a b c.
(Key -> These a b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
alignWithKey Key -> These a b -> c
f (KeyMap Map Key a
x )(KeyMap Map Key b
y )=forall v. Map Key v -> KeyMap v
KeyMap (forall i (f :: * -> *) a b c.
SemialignWithIndex i f =>
(i -> These a b -> c) -> f a -> f b -> f c
SAI.ialignWithKey -> These a b -> c
f Map Key a
x Map Key b
y )-- | Convert a 'KeyMap' to a @'HashMap' 'Text'@.toHashMapText ::KeyMap v ->HashMapTextv toHashMapText :: forall v. KeyMap v -> HashMap Text v
toHashMapText =forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
H.fromListforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall a b. (a -> b) -> [a] -> [b]
L.map(forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
firstKey -> Text
Key.toText )forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> [(Key, v)]
toList -- | Convert a @'HashMap' 'Text'@to a 'KeyMap'.fromHashMapText ::HashMapTextv ->KeyMap v fromHashMapText :: forall v. HashMap Text v -> KeyMap v
fromHashMapText =forall v. [(Key, v)] -> KeyMap v
fromList forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall a b. (a -> b) -> [a] -> [b]
L.map(forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
firstText -> Key
Key.fromText )forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall k v. HashMap k v -> [(k, v)]
H.toList-- | Convert a 'KeyMap' to a @'Map' 'Text'@.---- @since 2.0.2.0toMapText ::KeyMap v ->MapTextv toMapText :: forall v. KeyMap v -> Map Text v
toMapText =forall k a. Ord k => [(k, a)] -> Map k a
M.fromListforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall a b. (a -> b) -> [a] -> [b]
L.map(forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
firstKey -> Text
Key.toText )forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> [(Key, v)]
toList -- | Convert a @'Map' 'Text'@to a 'KeyMap'.---- @since 2.0.2.0fromMapText ::MapTextv ->KeyMap v fromMapText :: forall v. Map Text v -> KeyMap v
fromMapText =forall v. [(Key, v)] -> KeyMap v
fromList forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall a b. (a -> b) -> [a] -> [b]
L.map(forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
firstText -> Key
Key.fromText )forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall k a. Map k a -> [(k, a)]
M.toList--------------------------------------------------------------------------------- Instances--------------------------------------------------------------------------------- This are defined using concrete combinators above.instanceReadv =>Read(KeyMap v )wherereadPrec :: ReadPrec (KeyMap v)
readPrec=forall a. ReadPrec a -> ReadPrec a
parensforall a b. (a -> b) -> a -> b
$forall a. Int -> ReadPrec a -> ReadPrec a
precInt
10forall a b. (a -> b) -> a -> b
$doIdentString
"fromList"<-ReadPrec Lexeme
lexP[(Key, v)]
xs <-forall a. Read a => ReadPrec a
readPrecforall (m :: * -> *) a. Monad m => a -> m a
return(forall v. [(Key, v)] -> KeyMap v
fromList [(Key, v)]
xs )readListPrec :: ReadPrec [KeyMap v]
readListPrec=forall a. Read a => ReadPrec [a]
readListPrecDefaultinstanceShowv =>Show(KeyMap v )whereshowsPrec :: Int -> KeyMap v -> ShowS
showsPrec Int
d KeyMap v
m =Bool -> ShowS -> ShowS
showParen(Int
d forall a. Ord a => a -> a -> Bool
>Int
10)forall a b. (a -> b) -> a -> b
$String -> ShowS
showStringString
"fromList "forall b c a. (b -> c) -> (a -> b) -> a -> c
.forall a. Show a => a -> ShowS
shows(forall v. KeyMap v -> [(Key, v)]
toAscList KeyMap v
m )instanceF.FoldableKeyMap wherefoldMap :: forall m a. Monoid m => (a -> m) -> KeyMap a -> m
foldMapa -> m
f =forall m a. Monoid m => (Key -> a -> m) -> KeyMap a -> m
foldMapWithKey (\Key
_k a
v ->a -> m
f a
v ){-# INLINEfoldMap#-}foldr :: forall a b. (a -> b -> b) -> b -> KeyMap a -> b
foldr=forall a b. (a -> b -> b) -> b -> KeyMap a -> b
foldr foldr' :: forall a b. (a -> b -> b) -> b -> KeyMap a -> b
foldr'=forall a b. (a -> b -> b) -> b -> KeyMap a -> b
foldr' foldl :: forall b a. (b -> a -> b) -> b -> KeyMap a -> b
foldl=forall b a. (b -> a -> b) -> b -> KeyMap a -> b
foldl foldl' :: forall b a. (b -> a -> b) -> b -> KeyMap a -> b
foldl'=forall b a. (b -> a -> b) -> b -> KeyMap a -> b
foldl' null :: forall v. KeyMap v -> Bool
null=forall v. KeyMap v -> Bool
null length :: forall v. KeyMap v -> Int
length=forall v. KeyMap v -> Int
size instanceT.TraversableKeyMap wheretraverse :: forall (f :: * -> *) v1 v2.
Applicative f =>
(v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2)
traverse =forall (f :: * -> *) v1 v2.
Applicative f =>
(v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2)
traverse instanceSemigroup(KeyMap v )where<> :: KeyMap v -> KeyMap v -> KeyMap v
(<>)=forall v. KeyMap v -> KeyMap v -> KeyMap v
union instanceMonoid(KeyMap v )wheremempty :: KeyMap v
mempty=forall v. KeyMap v
empty mappend :: KeyMap v -> KeyMap v -> KeyMap v
mappend=forall a. Semigroup a => a -> a -> a
(<>)-- | @since 2.0.2.0instanceGHC.Exts.IsList(KeyMap v )wheretypeItem(KeyMap v )=(Key ,v )fromList :: [Item (KeyMap v)] -> KeyMap v
fromList=forall v. [(Key, v)] -> KeyMap v
fromList toList :: KeyMap v -> [Item (KeyMap v)]
toList=forall v. KeyMap v -> [(Key, v)]
toAscList --------------------------------------------------------------------------------- template-haskell-------------------------------------------------------------------------------instanceTH.Liftv =>TH.Lift(KeyMap v )wherelift :: forall (m :: * -> *). Quote m => KeyMap v -> m Exp
liftKeyMap v
m =[|fromListm'|]wherem' :: [(Key, v)]
m' =forall v. KeyMap v -> [(Key, v)]
toList KeyMap v
m 
#if MIN_VERSION_template_haskell(2,17,0)
liftTyped :: forall (m :: * -> *). Quote m => KeyMap v -> Code m (KeyMap v)
liftTyped=forall a (m :: * -> *). Quote m => m Exp -> Code m a
TH.unsafeCodeCoerceforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall t (m :: * -> *). (Lift t, Quote m) => t -> m Exp
TH.lift
#elif MIN_VERSION_template_haskell(2,16,0)
liftTyped=TH.unsafeTExpCoerce.TH.lift
#endif
--------------------------------------------------------------------------------- hashable-------------------------------------------------------------------------------instanceHashablev =>Hashable(KeyMap v )where
#ifdef USE_ORDEREDMAP
hashWithSalt :: Int -> KeyMap v -> Int
hashWithSaltInt
salt (KeyMap Map Key v
m )=forall a k b. (a -> k -> b -> a) -> a -> Map k b -> a
M.foldlWithKey'(\Int
acc Key
k v
v ->Int
acc forall a. Hashable a => Int -> a -> Int
`hashWithSalt`Key
k forall a. Hashable a => Int -> a -> Int
`hashWithSalt`v
v )(forall a. Hashable a => Int -> a -> Int
hashWithSaltInt
salt (forall k a. Map k a -> Int
M.sizeMap Key v
m ))Map Key v
m 
#else
hashWithSaltsalt(KeyMaphm)=hashWithSaltsalthm
#endif
--------------------------------------------------------------------------------- deepseq-------------------------------------------------------------------------------instanceNFDatav =>NFData(KeyMap v )wherernf :: KeyMap v -> ()
rnf(KeyMap Map Key v
hm )=forall a. NFData a => a -> ()
rnfMap Key v
hm --------------------------------------------------------------------------------- indexed-traversable-------------------------------------------------------------------------------instanceWI.FunctorWithIndexKey KeyMap whereimap :: forall a b. (Key -> a -> b) -> KeyMap a -> KeyMap b
imap=forall a b. (Key -> a -> b) -> KeyMap a -> KeyMap b
mapWithKey instanceWI.FoldableWithIndexKey KeyMap whereifoldr :: forall v a. (Key -> v -> a -> a) -> a -> KeyMap v -> a
ifoldr=forall v a. (Key -> v -> a -> a) -> a -> KeyMap v -> a
foldrWithKey instanceWI.TraversableWithIndexKey KeyMap whereitraverse :: forall (f :: * -> *) v1 v2.
Applicative f =>
(Key -> v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2)
itraverse=forall (f :: * -> *) v1 v2.
Applicative f =>
(Key -> v1 -> f v2) -> KeyMap v1 -> f (KeyMap v2)
traverseWithKey --------------------------------------------------------------------------------- semialign-------------------------------------------------------------------------------instanceSA.ZipKeyMap wherezipWith :: forall a b c. (a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
zipWith=forall a b c. (a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
intersectionWith instanceSAI.ZipWithIndexKey KeyMap whereizipWith :: forall a b c.
(Key -> a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
izipWith=forall a b c.
(Key -> a -> b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
intersectionWithKey instanceSA.SemialignKeyMap wherealignWith :: forall a b c. (These a b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
alignWith =forall a b c. (These a b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
alignWith instanceSAI.SemialignWithIndexKey KeyMap whereialignWith :: forall a b c.
(Key -> These a b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
ialignWith =forall a b c.
(Key -> These a b -> c) -> KeyMap a -> KeyMap b -> KeyMap c
alignWithKey instanceSA.AlignKeyMap wherenil :: forall v. KeyMap v
nil=forall v. KeyMap v
empty --------------------------------------------------------------------------------- witherable-------------------------------------------------------------------------------instanceW.FilterableKeyMap wherefilter :: forall v. (v -> Bool) -> KeyMap v -> KeyMap v
filter=forall v. (v -> Bool) -> KeyMap v -> KeyMap v
filter mapMaybe :: forall a b. (a -> Maybe b) -> KeyMap a -> KeyMap b
mapMaybe=forall a b. (a -> Maybe b) -> KeyMap a -> KeyMap b
mapMaybe instanceW.WitherableKeyMap whereinstanceW.FilterableWithIndexKey KeyMap whereifilter :: forall v. (Key -> v -> Bool) -> KeyMap v -> KeyMap v
ifilter=forall v. (Key -> v -> Bool) -> KeyMap v -> KeyMap v
filterWithKey imapMaybe :: forall v u. (Key -> v -> Maybe u) -> KeyMap v -> KeyMap u
imapMaybe=forall v u. (Key -> v -> Maybe u) -> KeyMap v -> KeyMap u
mapMaybeWithKey instanceW.WitherableWithIndexKey KeyMap where--------------------------------------------------------------------------------- QuickCheck--------------------------------------------------------------------------------- | @since 2.0.3.0instanceQC.Arbitrary1KeyMap whereliftArbitrary :: forall a. Gen a -> Gen (KeyMap a)
liftArbitraryGen a
a =forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmapforall v. [(Key, v)] -> KeyMap v
fromList (forall (f :: * -> *) a. Arbitrary1 f => Gen a -> Gen (f a)
QC.liftArbitrary(forall (f :: * -> *) a. Arbitrary1 f => Gen a -> Gen (f a)
QC.liftArbitraryGen a
a ))liftShrink :: forall a. (a -> [a]) -> KeyMap a -> [KeyMap a]
liftShrinka -> [a]
shr KeyMap a
m =forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmapforall v. [(Key, v)] -> KeyMap v
fromList (forall (f :: * -> *) a. Arbitrary1 f => (a -> [a]) -> f a -> [f a]
QC.liftShrink(forall (f :: * -> *) a. Arbitrary1 f => (a -> [a]) -> f a -> [f a]
QC.liftShrinka -> [a]
shr )(forall v. KeyMap v -> [(Key, v)]
toList KeyMap a
m ))-- | @since 2.0.3.0instanceQC.Arbitraryv =>QC.Arbitrary(KeyMap v )wherearbitrary :: Gen (KeyMap v)
arbitrary=forall (f :: * -> *) a. (Arbitrary1 f, Arbitrary a) => Gen (f a)
QC.arbitrary1shrink :: KeyMap v -> [KeyMap v]
shrink=forall (f :: * -> *) a. (Arbitrary1 f, Arbitrary a) => f a -> [f a]
QC.shrink1-- | @since 2.0.3.0instanceQC.CoArbitraryv =>QC.CoArbitrary(KeyMap v )wherecoarbitrary :: forall b. KeyMap v -> Gen b -> Gen b
coarbitrary=forall a b. CoArbitrary a => a -> Gen b -> Gen b
QC.coarbitraryforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall v. KeyMap v -> [(Key, v)]
toList -- | @since 2.0.3.0instanceQC.Functionv =>QC.Function(KeyMap v )wherefunction :: forall b. (KeyMap v -> b) -> KeyMap v :-> b
function=forall b a c.
Function b =>
(a -> b) -> (b -> a) -> (a -> c) -> a :-> c
QC.functionMapforall v. KeyMap v -> [(Key, v)]
toList forall v. [(Key, v)] -> KeyMap v
fromList 

AltStyle によって変換されたページ (->オリジナル) /