insert-ordered-containers-0.1.0.1: Associative containers retating insertion order for traversals.

Safe HaskellTrustworthy
LanguageHaskell2010

Data.HashMap.Strict.InsOrd

Contents

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 it's best to remember insertion order of elements.

Construction

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

Basic interface

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

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

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

Difference and intersection

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

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

Aeson extras

class FromJSONKey a where Source

Minimal complete definition

parseJSONKey

Methods

parseJSONKey :: Text -> Parser a Source

parseJSONKeyList :: Text -> Parser [a] Source

Default implementation parses into singleton list. String :(

class ToJSONKey a where Source

Minimal complete definition

toJSONKey

Methods

toJSONKey :: a -> Text Source

toJSONKeyList :: [a] -> Text Source

Default implementations picks first element, if exists; otherwise evaluates to "".

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.