-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Associative containers retating insertion order for traversals. -- -- Associative containers retating insertion order for traversals. @package insert-ordered-containers @version 0.1.0.1 -- | InsOrdHashMap is like HashMap, but it folds and -- traverses in insertion order. -- -- This module interface mimics Data.HashMap.Strict, with some -- additions. module Data.HashMap.Strict.InsOrd -- | HashMap which tries it's best to remember insertion order of -- elements. data InsOrdHashMap k v empty :: InsOrdHashMap k v singleton :: Hashable k => k -> v -> InsOrdHashMap k v null :: InsOrdHashMap k v -> Bool size :: InsOrdHashMap k v -> Int member :: (Eq k, Hashable k) => k -> InsOrdHashMap k a -> Bool lookup :: (Eq k, Hashable k) => k -> InsOrdHashMap k v -> Maybe v lookupDefault :: (Eq k, Hashable k) => v -> k -> InsOrdHashMap k v -> v insert :: (Eq k, Hashable k) => k -> v -> InsOrdHashMap k v -> InsOrdHashMap k v insertWith :: (Eq k, Hashable k) => (v -> v -> v) -> k -> v -> InsOrdHashMap k v -> InsOrdHashMap k v delete :: (Eq k, Hashable k) => k -> InsOrdHashMap k v -> InsOrdHashMap k v adjust :: (Eq k, Hashable k) => (v -> v) -> k -> InsOrdHashMap k v -> InsOrdHashMap k v update :: (Eq k, Hashable k) => (a -> Maybe a) -> k -> InsOrdHashMap k a -> InsOrdHashMap k a alter :: (Eq k, Hashable k) => (Maybe v -> Maybe v) -> k -> InsOrdHashMap k v -> InsOrdHashMap k v union :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v -- | 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. unionWith :: (Eq k, Hashable k) => (v -> v -> v) -> InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v unionWithKey :: (Eq k, Hashable k) => (k -> v -> v -> v) -> InsOrdHashMap k v -> InsOrdHashMap k v -> InsOrdHashMap k v unions :: (Eq k, Hashable k, Foldable f) => f (InsOrdHashMap k v) -> InsOrdHashMap k v map :: (v1 -> v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 -- | Order preserving mapping of keys. mapKeys :: (Eq k', Hashable k') => (k -> k') -> InsOrdHashMap k v -> InsOrdHashMap k' v traverseKeys :: (Eq k', Hashable k', Applicative f) => (k -> f k') -> InsOrdHashMap k v -> f (InsOrdHashMap k' v) mapWithKey :: (k -> v1 -> v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 traverseWithKey :: Applicative f => (k -> a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b) difference :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashMap k w -> InsOrdHashMap k v intersection :: (Eq k, Hashable k) => InsOrdHashMap k v -> InsOrdHashMap k w -> InsOrdHashMap k v intersectionWith :: (Eq k, Hashable k) => (v1 -> v2 -> v3) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 -> InsOrdHashMap k v3 intersectionWithKey :: (Eq k, Hashable k) => (k -> v1 -> v2 -> v3) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 -> InsOrdHashMap k v3 foldl' :: (a -> v -> a) -> a -> InsOrdHashMap k v -> a foldlWithKey' :: (a -> k -> v -> a) -> a -> InsOrdHashMap k v -> a foldr :: (v -> a -> a) -> a -> InsOrdHashMap k v -> a foldrWithKey :: (k -> v -> a -> a) -> a -> InsOrdHashMap k v -> a filter :: (v -> Bool) -> InsOrdHashMap k v -> InsOrdHashMap k v filterWithKey :: (k -> v -> Bool) -> InsOrdHashMap k v -> InsOrdHashMap k v mapMaybe :: (v1 -> Maybe v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 mapMaybeWithKey :: (k -> v1 -> Maybe v2) -> InsOrdHashMap k v1 -> InsOrdHashMap k v2 keys :: InsOrdHashMap k v -> [k] elems :: InsOrdHashMap k v -> [v] toList :: InsOrdHashMap k v -> [(k, v)] toRevList :: InsOrdHashMap k v -> [(k, v)] fromList :: (Eq k, Hashable k) => [(k, v)] -> InsOrdHashMap k v toHashMap :: InsOrdHashMap k v -> HashMap k v fromHashMap :: HashMap k v -> InsOrdHashMap k v -- | See https://github.com/bos/aeson/pull/341 class FromJSONKey a where parseJSONKeyList t = (: []) <$> parseJSONKey t parseJSONKey :: FromJSONKey a => Text -> Parser a -- | Default implementation parses into singleton list. String -- :( parseJSONKeyList :: FromJSONKey a => Text -> Parser [a] class ToJSONKey a where toJSONKeyList [] = empty toJSONKeyList (x : _) = toJSONKey x toJSONKey :: ToJSONKey a => a -> Text -- | Default implementations picks first element, if exists; otherwise -- evaluates to "". toJSONKeyList :: ToJSONKey a => [a] -> Text -- | This is a slight lie, as roundtrip doesn't preserve ordering. hashMap :: Iso (InsOrdHashMap k a) (InsOrdHashMap k b) (HashMap k a) (HashMap k b) unorderedTraversal :: Traversal (InsOrdHashMap k a) (InsOrdHashMap k b) a b -- | Test if the internal map structure is valid. valid :: InsOrdHashMap k v -> Bool instance (GHC.Classes.Eq k, Data.Data.Data k, Data.Data.Data v, Data.Hashable.Class.Hashable k) => Data.Data.Data (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance GHC.Base.Functor (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance Data.Data.Data a => Data.Data.Data (Data.HashMap.Strict.InsOrd.P a) instance Data.Traversable.Traversable Data.HashMap.Strict.InsOrd.P instance Data.Foldable.Foldable Data.HashMap.Strict.InsOrd.P instance GHC.Base.Functor Data.HashMap.Strict.InsOrd.P instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.HashMap.Strict.InsOrd.P a) instance GHC.Show.Show a => GHC.Show.Show (Data.HashMap.Strict.InsOrd.P a) instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Data.HashMap.Strict.InsOrd.P a) instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => GHC.Classes.Eq (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Show.Show k, GHC.Show.Show v) => GHC.Show.Show (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Read.Read k, GHC.Read.Read v) => GHC.Read.Read (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Semigroup.Semigroup (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.Base.Monoid (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance Data.Foldable.Foldable (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance Data.Traversable.Traversable (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Functor.Bind.Class.Apply (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Data.Functor.Bind.Class.Bind (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (Data.Hashable.Class.Hashable k, Data.Hashable.Class.Hashable v) => Data.Hashable.Class.Hashable (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.Exts.IsList (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance Data.HashMap.Strict.InsOrd.ToJSONKey GHC.Types.Char instance Data.HashMap.Strict.InsOrd.ToJSONKey GHC.Types.Int instance Data.HashMap.Strict.InsOrd.ToJSONKey a => Data.HashMap.Strict.InsOrd.ToJSONKey [a] instance Data.HashMap.Strict.InsOrd.ToJSONKey Data.Text.Internal.Text instance (Data.HashMap.Strict.InsOrd.ToJSONKey k, Data.Aeson.Types.Class.ToJSON v) => Data.Aeson.Types.Class.ToJSON (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance Data.HashMap.Strict.InsOrd.FromJSONKey GHC.Types.Char instance Data.HashMap.Strict.InsOrd.FromJSONKey GHC.Types.Int instance Data.HashMap.Strict.InsOrd.FromJSONKey a => Data.HashMap.Strict.InsOrd.FromJSONKey [a] instance Data.HashMap.Strict.InsOrd.FromJSONKey Data.Text.Internal.Text instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Data.HashMap.Strict.InsOrd.FromJSONKey k, Data.Aeson.Types.Class.FromJSON v) => Data.Aeson.Types.Class.FromJSON (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.At.Ixed (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.At.At (Data.HashMap.Strict.InsOrd.InsOrdHashMap k a) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.Indexed.FunctorWithIndex k (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.Indexed.FoldableWithIndex k (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.Indexed.TraversableWithIndex k (Data.HashMap.Strict.InsOrd.InsOrdHashMap k)