-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Associative containers retaining insertion order for traversals. -- -- Associative containers retaining insertion order for traversals. -- -- The implementation is based on `unordered-containers`. @package insert-ordered-containers @version 0.2.6 -- | 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 its 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) -- | More efficient than traverse, when traversing in insertion -- order is not important. unorderedTraverse :: Applicative f => (a -> f b) -> InsOrdHashMap k a -> f (InsOrdHashMap k b) -- | More efficient than traverseWithKey, when traversing in -- insertion order is not important. unorderedTraverseWithKey :: 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 foldMapWithKey :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m -- | More efficient than foldMap, when folding in insertion order is -- not important. unorderedFoldMap :: Monoid m => (a -> m) -> InsOrdHashMap k a -> m -- | More efficient than foldMapWithKey, when folding in insertion -- order is not important. unorderedFoldMapWithKey :: Monoid m => (k -> a -> m) -> InsOrdHashMap k a -> m 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 :: forall k v. (Eq k, Hashable k) => [(k, v)] -> InsOrdHashMap k v toHashMap :: InsOrdHashMap k v -> HashMap k v fromHashMap :: HashMap k v -> InsOrdHashMap k v -- | 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 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 (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 (Control.DeepSeq.NFData k, Control.DeepSeq.NFData v) => Control.DeepSeq.NFData (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance Control.DeepSeq.NFData k => Control.DeepSeq.NFData1 (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance Control.DeepSeq.NFData2 Data.HashMap.Strict.InsOrd.InsOrdHashMap 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) => GHC.Base.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.IsList.IsList (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance Data.Aeson.Types.ToJSON.ToJSONKey k => Data.Aeson.Types.ToJSON.ToJSON1 (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (Data.Aeson.Types.ToJSON.ToJSONKey k, Data.Aeson.Types.ToJSON.ToJSON v) => Data.Aeson.Types.ToJSON.ToJSON (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Data.Aeson.Types.FromJSON.FromJSONKey k) => Data.Aeson.Types.FromJSON.FromJSON1 (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Data.Aeson.Types.FromJSON.FromJSONKey k, Data.Aeson.Types.FromJSON.FromJSON v) => Data.Aeson.Types.FromJSON.FromJSON (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => WithIndex.FunctorWithIndex k (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => WithIndex.FoldableWithIndex k (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => WithIndex.TraversableWithIndex k (Data.HashMap.Strict.InsOrd.InsOrdHashMap k) 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) => Optics.At.Core.Ixed (Data.HashMap.Strict.InsOrd.InsOrdHashMap k v) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Optics.At.Core.At (Data.HashMap.Strict.InsOrd.InsOrdHashMap k a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.HashMap.Strict.InsOrd.P a) instance Control.DeepSeq.NFData1 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) -- | InsOrdHashSet is like HashSet, but it folds in insertion -- order. -- -- This module interface mimics Data.HashSet, with some additions. module Data.HashSet.InsOrd -- | HashSet which tries its best to remember insertion order of -- elements. data InsOrdHashSet k empty :: InsOrdHashSet k singleton :: Hashable k => k -> InsOrdHashSet k null :: InsOrdHashSet k -> Bool size :: InsOrdHashSet k -> Int member :: (Eq k, Hashable k) => k -> InsOrdHashSet k -> Bool insert :: (Eq k, Hashable k) => k -> InsOrdHashSet k -> InsOrdHashSet k delete :: (Eq k, Hashable k) => k -> InsOrdHashSet k -> InsOrdHashSet k union :: (Eq k, Hashable k) => InsOrdHashSet k -> InsOrdHashSet k -> InsOrdHashSet k map :: (Hashable b, Eq b) => (a -> b) -> InsOrdHashSet a -> InsOrdHashSet b difference :: (Eq a, Hashable a) => InsOrdHashSet a -> InsOrdHashSet a -> InsOrdHashSet a intersection :: (Eq a, Hashable a) => InsOrdHashSet a -> InsOrdHashSet a -> InsOrdHashSet a filter :: (a -> Bool) -> InsOrdHashSet a -> InsOrdHashSet a toList :: InsOrdHashSet k -> [k] fromList :: (Eq k, Hashable k) => [k] -> InsOrdHashSet k toHashSet :: InsOrdHashSet k -> HashSet k fromHashSet :: HashSet k -> InsOrdHashSet k -- | This is a slight lie, as roundtrip doesn't preserve ordering. hashSet :: Iso' (InsOrdHashSet a) (HashSet a) -- | Test if the internal map structure is valid. valid :: InsOrdHashSet a -> Bool instance (Data.Data.Data k, Data.Hashable.Class.Hashable k) => Data.Data.Data (Data.HashSet.InsOrd.InsOrdHashSet k) instance Control.DeepSeq.NFData k => Control.DeepSeq.NFData (Data.HashSet.InsOrd.InsOrdHashSet k) instance Control.DeepSeq.NFData1 Data.HashSet.InsOrd.InsOrdHashSet instance GHC.Classes.Eq k => GHC.Classes.Eq (Data.HashSet.InsOrd.InsOrdHashSet k) instance GHC.Show.Show k => GHC.Show.Show (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, GHC.Read.Read k) => GHC.Read.Read (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.Base.Semigroup (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.Base.Monoid (Data.HashSet.InsOrd.InsOrdHashSet k) instance Data.Foldable.Foldable Data.HashSet.InsOrd.InsOrdHashSet instance Data.Hashable.Class.Hashable k => Data.Hashable.Class.Hashable (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => GHC.IsList.IsList (Data.HashSet.InsOrd.InsOrdHashSet k) instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.HashSet.InsOrd.InsOrdHashSet a) instance (GHC.Classes.Eq a, Data.Hashable.Class.Hashable a, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.HashSet.InsOrd.InsOrdHashSet a) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.At.Ixed (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Control.Lens.At.At (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq a, Data.Hashable.Class.Hashable a) => Control.Lens.At.Contains (Data.HashSet.InsOrd.InsOrdHashSet a) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Optics.At.Core.Ixed (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k) => Optics.At.Core.At (Data.HashSet.InsOrd.InsOrdHashSet k) instance (GHC.Classes.Eq a, Data.Hashable.Class.Hashable a) => Optics.At.Core.Contains (Data.HashSet.InsOrd.InsOrdHashSet a)