insert-ordered-containers-0.2.5.1: Associative containers retaining insertion order for traversals.
Safe HaskellTrustworthy
LanguageHaskell2010

Data.HashMap.Strict.InsOrd

Description

InsOrdHashMap is like HashMap, but it folds and traverses in insertion order.

This module interface mimics Data.HashMap.Strict, with some additions.

Synopsis

Documentation

data InsOrdHashMap k v Source #

HashMap which tries its best to remember insertion order of elements.

Instances

Instances details
NFData2 InsOrdHashMap Source #

Since: 0.2.5

Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

liftRnf2 :: (a -> ()) -> (b -> ()) -> InsOrdHashMap a b -> ()

(Eq k, Hashable k) => FoldableWithIndex k (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

ifoldMap :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m

ifoldMap' :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m

ifoldr :: (k -> a -> b -> b) -> b -> InsOrdHashMap k a -> b

ifoldl :: (k -> b -> a -> b) -> b -> InsOrdHashMap k a -> b

ifoldr' :: (k -> a -> b -> b) -> b -> InsOrdHashMap k a -> b

ifoldl' :: (k -> b -> a -> b) -> b -> InsOrdHashMap k a -> b

(Eq k, Hashable k) => FunctorWithIndex k (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

imap :: (k -> a -> b) -> InsOrdHashMap k a -> InsOrdHashMap k b

(Eq k, Hashable k) => TraversableWithIndex k (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

itraverse :: Applicative f => (k -> a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b)

(Eq k, Hashable k) => FoldableWithIndex k (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

ifoldMap :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m

ifoldr :: (k -> a -> b -> b) -> b -> InsOrdHashMap k a -> b

ifoldl' :: (k -> b -> a -> b) -> b -> InsOrdHashMap k a -> b

(Eq k, Hashable k) => FunctorWithIndex k (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

imap :: (k -> a -> b) -> InsOrdHashMap k a -> InsOrdHashMap k b

(Eq k, Hashable k) => TraversableWithIndex k (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

itraverse :: Applicative f => (k -> a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b)

Functor (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

fmap :: (a -> b) -> InsOrdHashMap k a -> InsOrdHashMap k b

(<$) :: a -> InsOrdHashMap k b -> InsOrdHashMap k a

Foldable (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

fold :: Monoid m => InsOrdHashMap k m -> m

foldMap :: Monoid m => (a -> m) -> InsOrdHashMap k a -> m

foldMap' :: Monoid m => (a -> m) -> InsOrdHashMap k a -> m

foldr :: (a -> b -> b) -> b -> InsOrdHashMap k a -> b

foldr' :: (a -> b -> b) -> b -> InsOrdHashMap k a -> b

foldl :: (b -> a -> b) -> b -> InsOrdHashMap k a -> b

foldl' :: (b -> a -> b) -> b -> InsOrdHashMap k a -> b

foldr1 :: (a -> a -> a) -> InsOrdHashMap k a -> a

foldl1 :: (a -> a -> a) -> InsOrdHashMap k a -> a

toList :: InsOrdHashMap k a -> [a]

null :: InsOrdHashMap k a -> Bool

length :: InsOrdHashMap k a -> Int

elem :: Eq a => a -> InsOrdHashMap k a -> Bool

maximum :: Ord a => InsOrdHashMap k a -> a

minimum :: Ord a => InsOrdHashMap k a -> a

sum :: Num a => InsOrdHashMap k a -> a

product :: Num a => InsOrdHashMap k a -> a

Traversable (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

traverse :: Applicative f => (a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b)

sequenceA :: Applicative f => InsOrdHashMap k (f a) -> f (InsOrdHashMap k a)

mapM :: Monad m => (a -> m b) -> InsOrdHashMap k a -> m (InsOrdHashMap k b)

sequence :: Monad m => InsOrdHashMap k (m a) -> m (InsOrdHashMap k a)

NFData k => NFData1 (InsOrdHashMap k) Source #

Since: 0.2.5

Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

liftRnf :: (a -> ()) -> InsOrdHashMap k a -> ()

(Eq k, Hashable k, FromJSONKey k) => FromJSON1 (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

liftParseJSON :: (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (InsOrdHashMap k a)

liftParseJSONList :: (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser [InsOrdHashMap k a]

ToJSONKey k => ToJSON1 (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

liftToJSON :: (a -> Value) -> ([a] -> Value) -> InsOrdHashMap k a -> Value

liftToJSONList :: (a -> Value) -> ([a] -> Value) -> [InsOrdHashMap k a] -> Value

liftToEncoding :: (a -> Encoding) -> ([a] -> Encoding) -> InsOrdHashMap k a -> Encoding

liftToEncodingList :: (a -> Encoding) -> ([a] -> Encoding) -> [InsOrdHashMap k a] -> Encoding

(Eq k, Hashable k) => Apply (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

(<.>) :: InsOrdHashMap k (a -> b) -> InsOrdHashMap k a -> InsOrdHashMap k b

(.>) :: InsOrdHashMap k a -> InsOrdHashMap k b -> InsOrdHashMap k b

(<.) :: InsOrdHashMap k a -> InsOrdHashMap k b -> InsOrdHashMap k a

liftF2 :: (a -> b -> c) -> InsOrdHashMap k a -> InsOrdHashMap k b -> InsOrdHashMap k c

(Eq k, Hashable k) => Bind (InsOrdHashMap k) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

(>>-) :: InsOrdHashMap k a -> (a -> InsOrdHashMap k b) -> InsOrdHashMap k b

join :: InsOrdHashMap k (InsOrdHashMap k a) -> InsOrdHashMap k a

(Eq k, Hashable k) => IsList (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Associated Types

type Item (InsOrdHashMap k v)

Methods

fromList :: [Item (InsOrdHashMap k v)] -> InsOrdHashMap k v

fromListN :: Int -> [Item (InsOrdHashMap k v)] -> InsOrdHashMap k v

toList :: InsOrdHashMap k v -> [Item (InsOrdHashMap k v)]

(Eq k, Eq v) => Eq (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

(==) :: InsOrdHashMap k v -> InsOrdHashMap k v -> Bool

(/=) :: InsOrdHashMap k v -> InsOrdHashMap k v -> Bool

(Data k, Data v, Hashable k) => Data (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> InsOrdHashMap k v -> c (InsOrdHashMap k v)

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (InsOrdHashMap k v)

toConstr :: InsOrdHashMap k v -> Constr

dataTypeOf :: InsOrdHashMap k v -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (InsOrdHashMap k v))

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (InsOrdHashMap k v))

gmapT :: (forall b. Data b => b -> b) -> InsOrdHashMap k v -> InsOrdHashMap k v

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> InsOrdHashMap k v -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> InsOrdHashMap k v -> r

gmapQ :: (forall d. Data d => d -> u) -> InsOrdHashMap k v -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> InsOrdHashMap k v -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> InsOrdHashMap k v -> m (InsOrdHashMap k v)

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> InsOrdHashMap k v -> m (InsOrdHashMap k v)

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> InsOrdHashMap k v -> m (InsOrdHashMap k v)

(Eq k, Hashable k, Read k, Read v) => Read (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

readsPrec :: Int -> ReadS (InsOrdHashMap k v)

readList :: ReadS [InsOrdHashMap k v]

readPrec :: ReadPrec (InsOrdHashMap k v)

readListPrec :: ReadPrec [InsOrdHashMap k v]

(Show k, Show v) => Show (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

showsPrec :: Int -> InsOrdHashMap k v -> ShowS

show :: InsOrdHashMap k v -> String

showList :: [InsOrdHashMap k v] -> ShowS

(Eq k, Hashable k) => Semigroup (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

(<>) :: InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v

sconcat :: NonEmpty (InsOrdHashMap k v) -> InsOrdHashMap k v

stimes :: Integral b => b -> InsOrdHashMap k v -> InsOrdHashMap k v

(Eq k, Hashable k) => Monoid (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

(NFData k, NFData v) => NFData (InsOrdHashMap k v) Source #

Since: 0.2.5

Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

rnf :: InsOrdHashMap k v -> ()

(Eq k, Hashable k, FromJSONKey k, FromJSON v) => FromJSON (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

parseJSON :: Value -> Parser (InsOrdHashMap k v)

parseJSONList :: Value -> Parser [InsOrdHashMap k v]

(ToJSONKey k, ToJSON v) => ToJSON (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

toJSON :: InsOrdHashMap k v -> Value

toEncoding :: InsOrdHashMap k v -> Encoding

toJSONList :: [InsOrdHashMap k v] -> Value

toEncodingList :: [InsOrdHashMap k v] -> Encoding

(Hashable k, Hashable v) => Hashable (InsOrdHashMap k v) Source #

hashWithSalt salt . toHashMap = hashWithSalt salt.

Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

hashWithSalt :: Int -> InsOrdHashMap k v -> Int

hash :: InsOrdHashMap k v -> Int

(Eq k, Hashable k) => At (InsOrdHashMap k a) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

at :: Index (InsOrdHashMap k a) -> Lens' (InsOrdHashMap k a) (Maybe (IxValue (InsOrdHashMap k a)))

(Eq k, Hashable k) => Ixed (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

ix :: Index (InsOrdHashMap k v) -> Traversal' (InsOrdHashMap k v) (IxValue (InsOrdHashMap k v))

(Eq k, Hashable k) => At (InsOrdHashMap k a) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Methods

at :: Index (InsOrdHashMap k a) -> Lens' (InsOrdHashMap k a) (Maybe (IxValue (InsOrdHashMap k a)))

(Eq k, Hashable k) => Ixed (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

Associated Types

type IxKind (InsOrdHashMap k v)

Methods

ix :: Index (InsOrdHashMap k v) -> Optic' (IxKind (InsOrdHashMap k v)) NoIx (InsOrdHashMap k v) (IxValue (InsOrdHashMap k v))

type Index (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

type Index (InsOrdHashMap k v) = k
type IxValue (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

type IxValue (InsOrdHashMap k v) = v
type Index (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

type Index (InsOrdHashMap k v) = k
type IxValue (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

type IxValue (InsOrdHashMap k v) = v
type IxKind (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

type IxKind (InsOrdHashMap k v) = An_AffineTraversal
type Item (InsOrdHashMap k v) Source # 
Instance details

Defined in Data.HashMap.Strict.InsOrd

type Item (InsOrdHashMap k v) = (k, v)

Construction

singleton :: Hashable k => k -> v -> InsOrdHashMap k v Source #

Basic interface

null :: InsOrdHashMap k v -> Bool Source #

size :: InsOrdHashMap k v -> Int Source #

member :: (Eq k, Hashable k) => k -> InsOrdHashMap k a -> Bool Source #

lookup :: (Eq k, Hashable k) => k -> InsOrdHashMap k v -> Maybe v Source #

lookupDefault Source #

Arguments

:: (Eq k, Hashable k) 
=> v

Default value to return.

-> k 
-> InsOrdHashMap k v 
-> v 

insert :: (Eq k, Hashable k) => k -> v -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

insertWith :: (Eq k, Hashable k) => (v -> v -> v) -> k -> v -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

delete :: (Eq k, Hashable k) => k -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

adjust :: (Eq k, Hashable k) => (v -> v) -> k -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

update :: (Eq k, Hashable k) => (a -> Maybe a) -> k -> InsOrdHashMap k a -> InsOrdHashMap k a Source #

alter :: (Eq k, Hashable k) => (Maybe v -> Maybe v) -> k -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

Combine

union :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

unionWith :: (Eq k, Hashable k) => (v -> v -> v) -> InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

The union of two maps. If a key occurs in both maps, the provided function (first argument) will be used to compute the result.

Ordered traversal will go thru keys in the first map first.

unionWithKey :: (Eq k, Hashable k) => (k -> v -> v -> v) -> InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

unions :: (Eq k, Hashable k, Foldable f) => f (InsOrdHashMap k v) -> InsOrdHashMap k v Source #

Transformations

map :: (v1 -> v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 Source #

mapKeys :: (Eq k', Hashable k') => (k -> k') -> InsOrdHashMap k v -> InsOrdHashMap k' v Source #

Order preserving mapping of keys.

traverseKeys :: (Eq k', Hashable k', Applicative f) => (k -> f k') -> InsOrdHashMap k v -> f (InsOrdHashMap k' v) Source #

mapWithKey :: (k -> v1 -> v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 Source #

traverseWithKey :: Applicative f => (k -> a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b) Source #

Unordered

unorderedTraverse :: Applicative f => (a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b) Source #

More efficient than traverse, when traversing in insertion order is not important.

unorderedTraverseWithKey :: Applicative f => (k -> a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b) Source #

More efficient than traverseWithKey, when traversing in insertion order is not important.

Difference and intersection

difference :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashMap k w -> InsOrdHashMap k v Source #

intersection :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashMap k w -> InsOrdHashMap k v Source #

intersectionWith :: (Eq k, Hashable k) => (v1 -> v2 -> v3) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 -> InsOrdHashMap k v3 Source #

intersectionWithKey :: (Eq k, Hashable k) => (k -> v1 -> v2 -> v3) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 -> InsOrdHashMap k v3 Source #

Folds

foldl' :: (a -> v -> a) -> a -> InsOrdHashMap k v -> a Source #

foldlWithKey' :: (a -> k -> v -> a) -> a -> InsOrdHashMap k v -> a Source #

foldr :: (v -> a -> a) -> a -> InsOrdHashMap k v -> a Source #

foldrWithKey :: (k -> v -> a -> a) -> a -> InsOrdHashMap k v -> a Source #

foldMapWithKey :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m Source #

Unordered

unorderedFoldMap :: Monoid m => (a -> m) -> InsOrdHashMap k a -> m Source #

More efficient than foldMap, when folding in insertion order is not important.

unorderedFoldMapWithKey :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m Source #

More efficient than foldMapWithKey, when folding in insertion order is not important.

Filter

filter :: (v -> Bool) -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

filterWithKey :: (k -> v -> Bool) -> InsOrdHashMap k v -> InsOrdHashMap k v Source #

mapMaybe :: (v1 -> Maybe v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 Source #

mapMaybeWithKey :: (k -> v1 -> Maybe v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 Source #

Conversions

keys :: InsOrdHashMap k v -> [k] Source #

elems :: InsOrdHashMap k v -> [v] Source #

toList :: InsOrdHashMap k v -> [(k, v)] Source #

toRevList :: InsOrdHashMap k v -> [(k, v)] Source #

fromList :: forall k v. (Eq k, Hashable k) => [(k, v)] -> InsOrdHashMap k v Source #

toHashMap :: InsOrdHashMap k v -> HashMap k v Source #

fromHashMap :: HashMap k v -> InsOrdHashMap k v Source #

Lenses

hashMap :: Iso (InsOrdHashMap k a) (InsOrdHashMap k b) (HashMap k a) (HashMap k b) Source #

This is a slight lie, as roundtrip doesn't preserve ordering.

Debugging

valid :: InsOrdHashMap k v -> Bool Source #

Test if the internal map structure is valid.