packages feed

generic-trie 0.3.0.1 → 0.3.0.2

raw patch · 4 files changed

+78/−122 lines, 4 filesdep ~basedep ~transformersPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base, transformers

API changes (from Hackage documentation)

- Data.GenericTrie: getOrdKey :: OrdKey k -> k
- Data.GenericTrie.Internal: genericAt :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k, Functor f) => k -> (Maybe a -> f (Maybe a)) -> Trie k a -> f (Trie k a)
- Data.GenericTrie.Internal: getOrdKey :: OrdKey k -> k
- Data.GenericTrie.Internal: gtrieAt :: (GTrieKey f, Functor m) => (Maybe (GTrie f a) -> r) -> f p -> (Maybe a -> m (Maybe a)) -> GTrie f a -> m r
- Data.GenericTrie.Internal: instance (Constructor c, GTrieKeyShow f) => GTrieKeyShow (M1 C c f)
- Data.GenericTrie.Internal: instance (GTrieKey f, GTrieKey g) => GTrieKey (f :*: g)
- Data.GenericTrie.Internal: instance (GTrieKey f, GTrieKey g) => GTrieKey (f :+: g)
- Data.GenericTrie.Internal: instance (GTrieKeyShow f, GTrieKeyShow g) => GTrieKeyShow (f :*: g)
- Data.GenericTrie.Internal: instance (GTrieKeyShow f, GTrieKeyShow g) => GTrieKeyShow (f :+: g)
- Data.GenericTrie.Internal: instance (Show a, GTrieKeyShow f) => Show (GTrie f a)
- Data.GenericTrie.Internal: instance (Show a, TrieKey k) => Show (Trie k a)
- Data.GenericTrie.Internal: instance (Show k, Ord k) => TrieKey (OrdKey k)
- Data.GenericTrie.Internal: instance (TrieKey a, TrieKey b) => TrieKey (Either a b)
- Data.GenericTrie.Internal: instance (TrieKey a, TrieKey b) => TrieKey (a, b)
- Data.GenericTrie.Internal: instance (TrieKey a, TrieKey b, TrieKey c) => TrieKey (a, b, c)
- Data.GenericTrie.Internal: instance (TrieKey a, TrieKey b, TrieKey c, TrieKey d) => TrieKey (a, b, c, d)
- Data.GenericTrie.Internal: instance (TrieKey a, TrieKey b, TrieKey c, TrieKey d, TrieKey e) => TrieKey (a, b, c, d, e)
- Data.GenericTrie.Internal: instance Eq k => Eq (OrdKey k)
- Data.GenericTrie.Internal: instance GTrieKey U1
- Data.GenericTrie.Internal: instance GTrieKey V1
- Data.GenericTrie.Internal: instance GTrieKey f => Functor (GTrie f)
- Data.GenericTrie.Internal: instance GTrieKey f => GTrieKey (M1 i c f)
- Data.GenericTrie.Internal: instance GTrieKeyShow U1
- Data.GenericTrie.Internal: instance GTrieKeyShow V1
- Data.GenericTrie.Internal: instance GTrieKeyShow f => GTrieKeyShow (M1 D d f)
- Data.GenericTrie.Internal: instance GTrieKeyShow f => GTrieKeyShow (M1 S s f)
- Data.GenericTrie.Internal: instance Ord k => Ord (OrdKey k)
- Data.GenericTrie.Internal: instance Read k => Read (OrdKey k)
- Data.GenericTrie.Internal: instance Show k => Show (OrdKey k)
- Data.GenericTrie.Internal: instance TrieKey ()
- Data.GenericTrie.Internal: instance TrieKey Bool
- Data.GenericTrie.Internal: instance TrieKey Char
- Data.GenericTrie.Internal: instance TrieKey Int
- Data.GenericTrie.Internal: instance TrieKey Integer
- Data.GenericTrie.Internal: instance TrieKey k => Foldable (Trie k)
- Data.GenericTrie.Internal: instance TrieKey k => Functor (Trie k)
- Data.GenericTrie.Internal: instance TrieKey k => GTrieKey (K1 i k)
- Data.GenericTrie.Internal: instance TrieKey k => GTrieKeyShow (K1 i k)
- Data.GenericTrie.Internal: instance TrieKey k => Traversable (Trie k)
- Data.GenericTrie.Internal: instance TrieKey k => TrieKey (Maybe k)
- Data.GenericTrie.Internal: instance TrieKey k => TrieKey [k]
- Data.GenericTrie.Internal: trieAt :: (TrieKey k, Functor f) => k -> (Maybe a -> f (Maybe a)) -> Trie k a -> f (Trie k a)
- Data.GenericTrie.Internal: type TrieRepDefault k = Compose Maybe (GTrie (Rep k))
+ Data.GenericTrie: [getOrdKey] :: OrdKey k -> k
+ Data.GenericTrie.Internal: [getOrdKey] :: OrdKey k -> k
+ Data.GenericTrie.Internal: data TrieRepDefault k a
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.GTrieKey f, Data.GenericTrie.Internal.GTrieKey g) => Data.GenericTrie.Internal.GTrieKey (f GHC.Generics.:*: g)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.GTrieKey f, Data.GenericTrie.Internal.GTrieKey g) => Data.GenericTrie.Internal.GTrieKey (f GHC.Generics.:+: g)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.GTrieKeyShow f, Data.GenericTrie.Internal.GTrieKeyShow g) => Data.GenericTrie.Internal.GTrieKeyShow (f GHC.Generics.:*: g)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.GTrieKeyShow f, Data.GenericTrie.Internal.GTrieKeyShow g) => Data.GenericTrie.Internal.GTrieKeyShow (f GHC.Generics.:+: g)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.TrieKey a, Data.GenericTrie.Internal.TrieKey b) => Data.GenericTrie.Internal.TrieKey (Data.Either.Either a b)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.TrieKey a, Data.GenericTrie.Internal.TrieKey b) => Data.GenericTrie.Internal.TrieKey (a, b)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.TrieKey a, Data.GenericTrie.Internal.TrieKey b, Data.GenericTrie.Internal.TrieKey c) => Data.GenericTrie.Internal.TrieKey (a, b, c)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.TrieKey a, Data.GenericTrie.Internal.TrieKey b, Data.GenericTrie.Internal.TrieKey c, Data.GenericTrie.Internal.TrieKey d) => Data.GenericTrie.Internal.TrieKey (a, b, c, d)
+ Data.GenericTrie.Internal: instance (Data.GenericTrie.Internal.TrieKey a, Data.GenericTrie.Internal.TrieKey b, Data.GenericTrie.Internal.TrieKey c, Data.GenericTrie.Internal.TrieKey d, Data.GenericTrie.Internal.TrieKey e) => Data.GenericTrie.Internal.TrieKey (a, b, c, d, e)
+ Data.GenericTrie.Internal: instance (GHC.Generics.Constructor c, Data.GenericTrie.Internal.GTrieKeyShow f) => Data.GenericTrie.Internal.GTrieKeyShow (GHC.Generics.M1 GHC.Generics.C c f)
+ Data.GenericTrie.Internal: instance (GHC.Show.Show a, Data.GenericTrie.Internal.GTrieKeyShow f) => GHC.Show.Show (Data.GenericTrie.Internal.GTrie f a)
+ Data.GenericTrie.Internal: instance (GHC.Show.Show a, Data.GenericTrie.Internal.TrieKey k) => GHC.Show.Show (Data.GenericTrie.Internal.Trie k a)
+ Data.GenericTrie.Internal: instance (GHC.Show.Show k, GHC.Classes.Ord k) => Data.GenericTrie.Internal.TrieKey (Data.GenericTrie.Internal.OrdKey k)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKey GHC.Generics.U1
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKey GHC.Generics.V1
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKey f => Data.GenericTrie.Internal.GTrieKey (GHC.Generics.M1 i c f)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKey f => GHC.Base.Functor (Data.GenericTrie.Internal.GTrie f)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKeyShow GHC.Generics.U1
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKeyShow GHC.Generics.V1
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKeyShow f => Data.GenericTrie.Internal.GTrieKeyShow (GHC.Generics.M1 GHC.Generics.D d f)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.GTrieKeyShow f => Data.GenericTrie.Internal.GTrieKeyShow (GHC.Generics.M1 GHC.Generics.S s f)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey ()
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey GHC.Integer.Type.Integer
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey GHC.Types.Bool
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey GHC.Types.Char
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey GHC.Types.Int
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => Data.Foldable.Foldable (Data.GenericTrie.Internal.Trie k)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => Data.GenericTrie.Internal.GTrieKey (GHC.Generics.K1 i k)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => Data.GenericTrie.Internal.GTrieKeyShow (GHC.Generics.K1 i k)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => Data.GenericTrie.Internal.TrieKey (GHC.Base.Maybe k)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => Data.GenericTrie.Internal.TrieKey [k]
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => Data.Traversable.Traversable (Data.GenericTrie.Internal.Trie k)
+ Data.GenericTrie.Internal: instance Data.GenericTrie.Internal.TrieKey k => GHC.Base.Functor (Data.GenericTrie.Internal.Trie k)
+ Data.GenericTrie.Internal: instance GHC.Classes.Eq k => GHC.Classes.Eq (Data.GenericTrie.Internal.OrdKey k)
+ Data.GenericTrie.Internal: instance GHC.Classes.Ord k => GHC.Classes.Ord (Data.GenericTrie.Internal.OrdKey k)
+ Data.GenericTrie.Internal: instance GHC.Read.Read k => GHC.Read.Read (Data.GenericTrie.Internal.OrdKey k)
+ Data.GenericTrie.Internal: instance GHC.Show.Show k => GHC.Show.Show (Data.GenericTrie.Internal.OrdKey k)
+ Data.GenericTrie.Internal: type TrieRep k = TrieRepDefault k;
+ Data.GenericTrie.Internal: type family TrieRep k :: * -> *;
+ Data.GenericTrie.Internal: }
- Data.GenericTrie: class TrieKey k where type instance TrieRep k = TrieRepDefault k trieEmpty = genericEmpty trieSingleton = genericSingleton trieNull = genericTrieNull trieLookup = genericLookup trieInsert = genericInsert trieDelete = genericDelete trieMap = genericTrieMap trieTraverse = genericTrieTraverse trieShowsPrec = genericTrieShowsPrec trieMapMaybeWithKey = genericMapMaybeWithKey trieFoldWithKey = genericFoldWithKey trieTraverseWithKey = genericTraverseWithKey trieMergeWithKey = genericMergeWithKey trieAt = genericAt
+ Data.GenericTrie: class TrieKey k where type TrieRep k = TrieRepDefault k trieEmpty = genericEmpty trieSingleton = genericSingleton trieNull = genericTrieNull trieLookup = genericLookup trieInsert = genericInsert trieDelete = genericDelete trieMap = genericTrieMap trieTraverse = genericTrieTraverse trieShowsPrec = genericTrieShowsPrec trieMapMaybeWithKey = genericMapMaybeWithKey trieFoldWithKey = genericFoldWithKey trieTraverseWithKey = genericTraverseWithKey trieMergeWithKey = genericMergeWithKey
- Data.GenericTrie.Internal: class TrieKey k where type family TrieRep k :: * -> * type instance TrieRep k = TrieRepDefault k trieEmpty = genericEmpty trieSingleton = genericSingleton trieNull = genericTrieNull trieLookup = genericLookup trieInsert = genericInsert trieDelete = genericDelete trieMap = genericTrieMap trieTraverse = genericTrieTraverse trieShowsPrec = genericTrieShowsPrec trieMapMaybeWithKey = genericMapMaybeWithKey trieFoldWithKey = genericFoldWithKey trieTraverseWithKey = genericTraverseWithKey trieMergeWithKey = genericMergeWithKey trieAt = genericAt
+ Data.GenericTrie.Internal: class TrieKey k where type TrieRep k :: * -> * type TrieRep k = TrieRepDefault k trieEmpty = genericEmpty trieSingleton = genericSingleton trieNull = genericTrieNull trieLookup = genericLookup trieInsert = genericInsert trieDelete = genericDelete trieMap = genericTrieMap trieTraverse = genericTrieTraverse trieShowsPrec = genericTrieShowsPrec trieMapMaybeWithKey = genericMapMaybeWithKey trieFoldWithKey = genericFoldWithKey trieTraverseWithKey = genericTraverseWithKey trieMergeWithKey = genericMergeWithKey where {
- Data.GenericTrie.Internal: genericEmpty :: TrieRep k ~ TrieRepDefault k => Trie k a
+ Data.GenericTrie.Internal: genericEmpty :: (TrieRep k ~ TrieRepDefault k) => Trie k a
- Data.GenericTrie.Internal: genericTrieNull :: TrieRep k ~ TrieRepDefault k => Trie k a -> Bool
+ Data.GenericTrie.Internal: genericTrieNull :: (TrieRep k ~ TrieRepDefault k) => Trie k a -> Bool
- Data.GenericTrie.Internal: trieDelete :: TrieKey k => k -> Trie k a -> Trie k a
+ Data.GenericTrie.Internal: trieDelete :: (TrieKey k, GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Trie k a
- Data.GenericTrie.Internal: trieEmpty :: TrieKey k => Trie k a
+ Data.GenericTrie.Internal: trieEmpty :: (TrieKey k, TrieRep k ~ TrieRepDefault k) => Trie k a
- Data.GenericTrie.Internal: trieFoldWithKey :: TrieKey k => (k -> a -> r -> r) -> r -> Trie k a -> r
+ Data.GenericTrie.Internal: trieFoldWithKey :: (TrieKey k, GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Generic k) => (k -> a -> r -> r) -> r -> Trie k a -> r
- Data.GenericTrie.Internal: trieInsert :: TrieKey k => k -> a -> Trie k a -> Trie k a
+ Data.GenericTrie.Internal: trieInsert :: (TrieKey k, GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a -> Trie k a
- Data.GenericTrie.Internal: trieLookup :: TrieKey k => k -> Trie k a -> Maybe a
+ Data.GenericTrie.Internal: trieLookup :: (TrieKey k, GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Maybe a
- Data.GenericTrie.Internal: trieMap :: TrieKey k => (a -> b) -> Trie k a -> Trie k b
+ Data.GenericTrie.Internal: trieMap :: (TrieKey k, GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k) => (a -> b) -> Trie k a -> Trie k b
- Data.GenericTrie.Internal: trieMapMaybeWithKey :: TrieKey k => (k -> a -> Maybe b) -> Trie k a -> Trie k b
+ Data.GenericTrie.Internal: trieMapMaybeWithKey :: (TrieKey k, GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => (k -> a -> Maybe b) -> Trie k a -> Trie k b
- Data.GenericTrie.Internal: trieMergeWithKey :: TrieKey k => (k -> a -> b -> Maybe c) -> (Trie k a -> Trie k c) -> (Trie k b -> Trie k c) -> Trie k a -> Trie k b -> Trie k c
+ Data.GenericTrie.Internal: trieMergeWithKey :: (TrieKey k, GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Generic k) => (k -> a -> b -> Maybe c) -> (Trie k a -> Trie k c) -> (Trie k b -> Trie k c) -> Trie k a -> Trie k b -> Trie k c
- Data.GenericTrie.Internal: trieNull :: TrieKey k => Trie k a -> Bool
+ Data.GenericTrie.Internal: trieNull :: (TrieKey k, TrieRep k ~ TrieRepDefault k) => Trie k a -> Bool
- Data.GenericTrie.Internal: trieShowsPrec :: (TrieKey k, Show a) => Int -> Trie k a -> ShowS
+ Data.GenericTrie.Internal: trieShowsPrec :: (TrieKey k, Show a, GTrieKeyShow (Rep k), TrieRep k ~ TrieRepDefault k) => Int -> Trie k a -> ShowS
- Data.GenericTrie.Internal: trieSingleton :: TrieKey k => k -> a -> Trie k a
+ Data.GenericTrie.Internal: trieSingleton :: (TrieKey k, GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a
- Data.GenericTrie.Internal: trieTraverse :: (TrieKey k, Applicative f) => (a -> f b) -> Trie k a -> f (Trie k b)
+ Data.GenericTrie.Internal: trieTraverse :: (TrieKey k, GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Applicative f) => (a -> f b) -> Trie k a -> f (Trie k b)
- Data.GenericTrie.Internal: trieTraverseWithKey :: (TrieKey k, Applicative f) => (k -> a -> f b) -> Trie k a -> f (Trie k b)
+ Data.GenericTrie.Internal: trieTraverseWithKey :: (TrieKey k, GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Generic k, Applicative f) => (k -> a -> f b) -> Trie k a -> f (Trie k b)

Files

+ CHANGELOG.md view
@@ -0,0 +1,3 @@+0.3.0.2+-------+* GHC 8 compatibility
generic-trie.cabal view
@@ -1,5 +1,5 @@ name:                generic-trie-version:             0.3.0.1+version:             0.3.0.2 synopsis:            A map, where the keys may be complex structured data. description:         This type implements maps where the keys are themselves                      complex structured data.  For example, the keys may be@@ -19,11 +19,14 @@ homepage:            http://github.com/glguy/tries bug-reports:         http://github.com/glguy/tries/issues +extra-source-files:+  CHANGELOG.md+ library   exposed-modules:     Data.GenericTrie,                        Data.GenericTrie.Internal-  build-depends:       base             >= 4.5     && < 4.9,-                       transformers     >= 0.2     && < 0.5,+  build-depends:       base             >= 4.5     && < 4.10,+                       transformers     >= 0.2     && < 0.6,                        containers       >= 0.4.2.1 && < 0.6   GHC-options:         -O2 -Wall 
src/Data/GenericTrie.hs view
@@ -46,7 +46,7 @@   , insertWith   , insertWith'   , delete-  , at +  , at    -- ** Queries   , member@@ -124,8 +124,12 @@  -- | Lens for the value at a given key at :: (Functor f, TrieKey k) => k -> (Maybe a -> f (Maybe a)) -> Trie k a -> f (Trie k a)-at = trieAt-{-# INLINE at #-}+at k f m = fmap aux (f mv)+  where+  mv = lookup k m+  aux r = case r of+    Nothing -> maybe m (const (delete k m)) mv+    Just v' -> insert k v' m  -- | Insert an element into a trie insert :: TrieKey k => k -> a -> Trie k a -> Trie k a
src/Data/GenericTrie/Internal.hs view
@@ -6,7 +6,12 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Trustworthy #-} -- coerce+{-# LANGUAGE CPP #-} -- MProxy on ghc >= 8 +#if MIN_VERSION_base(4,9,0)+{-# LANGUAGE DataKinds #-} -- Meta+#endif+ -- | Unstable implementation details module Data.GenericTrie.Internal   ( TrieKey(..)@@ -23,7 +28,6 @@   , genericMapMaybeWithKey   , genericSingleton   , genericEmpty-  , genericAt   , genericFoldWithKey   , genericTraverseWithKey   , TrieRepDefault@@ -70,9 +74,6 @@   -- | Delete element from trie   trieDelete :: k -> Trie k a -> Trie k a -  trieAt :: Functor f => k -> (Maybe a -> f (Maybe a)) ->-                              Trie k a -> f (Trie k a)-   -- | Construct a trie holding a single value   trieSingleton :: k -> a -> Trie k a @@ -171,11 +172,6 @@     Trie k a -> Trie k b -> Trie k c   trieMergeWithKey = genericMergeWithKey -  default trieAt ::-    ( GTrieKey (Rep k) , TrieRep k ~ TrieRepDefault k, Generic k, Functor f ) =>-    k -> (Maybe a -> f (Maybe a)) -> Trie k a -> f (Trie k a)-  trieAt = genericAt- -- | The default implementation of a 'TrieRep' is 'GTrie' wrapped in -- a 'Maybe'. This wrapping is due to the 'GTrie' being a non-empty -- trie allowing all the of the "emptiness" to be represented at the@@ -190,15 +186,6 @@ -- Manually derived instances for base types ------------------------------------------------------------------------------ -simpleAt ::-  (Functor f, TrieKey k) =>-  k -> (Maybe a -> f (Maybe a)) -> Trie k a -> f (Trie k a)-simpleAt k f m = flip fmap (f mv) $ \r -> case r of-    Nothing -> maybe m (const (trieDelete k m)) mv-    Just v' -> trieInsert k v' m-    where mv = trieLookup k m-{-# INLINE simpleAt #-}- -- | 'Int' tries are implemented with 'IntMap'. instance TrieKey Int where   type TrieRep Int              = IntMap@@ -215,20 +202,19 @@   trieFoldWithKey f z (MkTrie x)    = IntMap.foldWithKey f z x   trieTraverseWithKey f (MkTrie x)  = fmap MkTrie (IntMap.traverseWithKey f x)   trieMergeWithKey f g h (MkTrie x) (MkTrie y) = MkTrie (IntMap.mergeWithKey f (coerce g) (coerce h) x y)-  trieAt                        = simpleAt-  {-# INLINE trieEmpty #-}-  {-# INLINE trieInsert #-}-  {-# INLINE trieLookup #-}-  {-# INLINE trieDelete #-}-  {-# INLINE trieSingleton #-}-  {-# INLINE trieFoldWithKey #-}-  {-# INLINE trieShowsPrec #-}-  {-# INLINE trieTraverse #-}-  {-# INLINE trieTraverseWithKey #-}-  {-# INLINE trieNull #-}-  {-# INLINE trieMap #-}-  {-# INLINE trieMergeWithKey #-}-  {-# INLINE trieMapMaybeWithKey #-}+  {-# INLINABLE trieEmpty #-}+  {-# INLINABLE trieInsert #-}+  {-# INLINABLE trieLookup #-}+  {-# INLINABLE trieDelete #-}+  {-# INLINABLE trieSingleton #-}+  {-# INLINABLE trieFoldWithKey #-}+  {-# INLINABLE trieShowsPrec #-}+  {-# INLINABLE trieTraverse #-}+  {-# INLINABLE trieTraverseWithKey #-}+  {-# INLINABLE trieNull #-}+  {-# INLINABLE trieMap #-}+  {-# INLINABLE trieMergeWithKey #-}+  {-# INLINABLE trieMapMaybeWithKey #-}  -- | 'Integer' tries are implemented with 'Map'. instance TrieKey Integer where@@ -246,20 +232,19 @@   trieFoldWithKey f z (MkTrie x)    = Map.foldrWithKey f z x   trieTraverseWithKey f (MkTrie x)  = fmap MkTrie (Map.traverseWithKey f x)   trieMergeWithKey f g h (MkTrie x) (MkTrie y) = MkTrie (Map.mergeWithKey f (coerce g) (coerce h) x y)-  trieAt                            = simpleAt-  {-# INLINE trieEmpty #-}-  {-# INLINE trieInsert #-}-  {-# INLINE trieLookup #-}-  {-# INLINE trieDelete #-}-  {-# INLINE trieSingleton #-}-  {-# INLINE trieFoldWithKey #-}-  {-# INLINE trieShowsPrec #-}-  {-# INLINE trieTraverse #-}-  {-# INLINE trieTraverseWithKey #-}-  {-# INLINE trieNull #-}-  {-# INLINE trieMap #-}-  {-# INLINE trieMergeWithKey #-}-  {-# INLINE trieMapMaybeWithKey #-}+  {-# INLINABLE trieEmpty #-}+  {-# INLINABLE trieInsert #-}+  {-# INLINABLE trieLookup #-}+  {-# INLINABLE trieDelete #-}+  {-# INLINABLE trieSingleton #-}+  {-# INLINABLE trieFoldWithKey #-}+  {-# INLINABLE trieShowsPrec #-}+  {-# INLINABLE trieTraverse #-}+  {-# INLINABLE trieTraverseWithKey #-}+  {-# INLINABLE trieNull #-}+  {-# INLINABLE trieMap #-}+  {-# INLINABLE trieMergeWithKey #-}+  {-# INLINABLE trieMapMaybeWithKey #-}  -- | 'Char' tries are implemented with 'IntMap'. instance TrieKey Char where@@ -277,20 +262,19 @@   trieFoldWithKey f z (MkTrie x)    = IntMap.foldrWithKey (f . chr) z x   trieTraverseWithKey f (MkTrie x)  = fmap MkTrie (IntMap.traverseWithKey (f . chr) x)   trieMergeWithKey f g h (MkTrie x) (MkTrie y) = MkTrie (IntMap.mergeWithKey (f . chr) (coerce g) (coerce h) x y)-  trieAt                            = simpleAt-  {-# INLINE trieEmpty #-}-  {-# INLINE trieInsert #-}-  {-# INLINE trieLookup #-}-  {-# INLINE trieDelete #-}-  {-# INLINE trieSingleton #-}-  {-# INLINE trieFoldWithKey #-}-  {-# INLINE trieShowsPrec #-}-  {-# INLINE trieTraverse #-}-  {-# INLINE trieTraverseWithKey #-}-  {-# INLINE trieNull #-}-  {-# INLINE trieMap #-}-  {-# INLINE trieMergeWithKey #-}-  {-# INLINE trieMapMaybeWithKey #-}+  {-# INLINABLE trieEmpty #-}+  {-# INLINABLE trieInsert #-}+  {-# INLINABLE trieLookup #-}+  {-# INLINABLE trieDelete #-}+  {-# INLINABLE trieSingleton #-}+  {-# INLINABLE trieFoldWithKey #-}+  {-# INLINABLE trieShowsPrec #-}+  {-# INLINABLE trieTraverse #-}+  {-# INLINABLE trieTraverseWithKey #-}+  {-# INLINABLE trieNull #-}+  {-# INLINABLE trieMap #-}+  {-# INLINABLE trieMergeWithKey #-}+  {-# INLINABLE trieMapMaybeWithKey #-}  -- | Tries indexed by 'OrdKey' will be represented as an ordinary 'Map' -- and the keys will be compared based on the 'Ord' instance for @k@.@@ -316,20 +300,19 @@   trieFoldWithKey f z (MkTrie x)        = Map.foldrWithKey (f . OrdKey) z x   trieTraverseWithKey f (MkTrie x)      = fmap MkTrie (Map.traverseWithKey (f . OrdKey) x)   trieMergeWithKey f g h (MkTrie x) (MkTrie y) = MkTrie (Map.mergeWithKey (f . OrdKey) (coerce g) (coerce h) x y)-  trieAt                                = simpleAt-  {-# INLINE trieEmpty #-}-  {-# INLINE trieInsert #-}-  {-# INLINE trieLookup #-}-  {-# INLINE trieDelete #-}-  {-# INLINE trieSingleton #-}-  {-# INLINE trieFoldWithKey #-}-  {-# INLINE trieShowsPrec #-}-  {-# INLINE trieTraverse #-}-  {-# INLINE trieTraverseWithKey #-}-  {-# INLINE trieNull #-}-  {-# INLINE trieMap #-}-  {-# INLINE trieMergeWithKey #-}-  {-# INLINE trieMapMaybeWithKey #-}+  {-# INLINABLE trieEmpty #-}+  {-# INLINABLE trieInsert #-}+  {-# INLINABLE trieLookup #-}+  {-# INLINABLE trieDelete #-}+  {-# INLINABLE trieSingleton #-}+  {-# INLINABLE trieFoldWithKey #-}+  {-# INLINABLE trieShowsPrec #-}+  {-# INLINABLE trieTraverse #-}+  {-# INLINABLE trieTraverseWithKey #-}+  {-# INLINABLE trieNull #-}+  {-# INLINABLE trieMap #-}+  {-# INLINABLE trieMergeWithKey #-}+  {-# INLINABLE trieMapMaybeWithKey #-}  ------------------------------------------------------------------------------ -- Automatically derived instances for common types@@ -384,19 +367,6 @@ {-# INLINABLE genericEmpty #-}  -- | Generic implementation of 'insert'. This is the default implementation.-genericAt ::-    ( GTrieKey (Rep k), Generic k-    , TrieRep k ~ TrieRepDefault k-    , Functor f-    ) =>-    k -> (Maybe a -> f (Maybe a)) -> Trie k a -> f (Trie k a)-genericAt k f (MkTrie (Compose m)) =-  case m of-    Nothing -> fmap (MkTrie . Compose . fmap (gtrieSingleton (from k))) (f Nothing)-    Just t  -> gtrieAt (MkTrie . Compose) (from k) f t-{-# INLINABLE genericAt #-}---- | Generic implementation of 'insert'. This is the default implementation. genericInsert ::     ( GTrieKey (Rep k), Generic k     , TrieRep k ~ TrieRepDefault k@@ -533,11 +503,6 @@                     (GTrie f a -> Maybe (GTrie f c)) ->                     (GTrie f b -> Maybe (GTrie f c)) ->                     GTrie f a -> GTrie f b -> Maybe (GTrie f c)-  gtrieAt        :: Functor m =>-                      (Maybe (GTrie f a) -> r) ->-                      f p ->-                      (Maybe a -> m (Maybe a)) ->-                      GTrie f a -> m r  -- | The 'GTrieKeyShow' class provides generic implementations -- of 'showsPrec'. This class is separate due to its implementation@@ -561,7 +526,6 @@   gfoldWithKey f z (MTrie x)    = gfoldWithKey (f . M1) z x   gtraverseWithKey f (MTrie x)  = fmap MTrie (gtraverseWithKey (f . M1) x)   gmergeWithKey f g h (MTrie x) (MTrie y) = fmap MTrie (gmergeWithKey (f . M1) (coerce g) (coerce h) x y)-  gtrieAt z (M1 k) f (MTrie x)  = gtrieAt (z . fmap MTrie) k f x   {-# INLINE gtrieLookup #-}   {-# INLINE gtrieInsert #-}   {-# INLINE gtrieSingleton #-}@@ -571,9 +535,12 @@   {-# INLINE gtrieTraverse #-}   {-# INLINE gfoldWithKey #-}   {-# INLINE gtraverseWithKey #-}-  {-# INLINE gtrieAt #-} -data MProxy c (f :: * -> *) a = MProxy+#if MIN_VERSION_base(4,9,0)+data MProxy (c :: Meta) (f :: * -> *) a = MProxy+#else+data MProxy (c :: *)    (f :: * -> *) a = MProxy+#endif  instance GTrieKeyShow f => GTrieKeyShow (M1 D d f) where   gtrieShowsPrec p (MTrie x)    = showsPrec p x@@ -614,7 +581,6 @@      h' t = case h (KTrie t) of               Just (KTrie t') -> t'               Nothing         -> trieEmpty-  gtrieAt z (K1 k) f (KTrie x) = fmap (z . fmap KTrie . checkNull) (trieAt k f x)   {-# INLINE gtrieLookup #-}   {-# INLINE gtrieInsert #-}   {-# INLINE gtrieSingleton #-}@@ -625,7 +591,6 @@   {-# INLINE gtraverseWithKey #-}   {-# INLINE gmergeWithKey #-}   {-# INLINE gmapMaybeWithKey #-}-  {-# INLINE gtrieAt #-}  instance TrieKey k => GTrieKeyShow (K1 i k) where   gtrieShowsPrec p (KTrie x)            = showsPrec p x@@ -672,12 +637,6 @@     h' i t = do PTrie t' <- h (PTrie (gtrieSingleton i t))                 gtrieLookup i t' -  gtrieAt z (i :*: j) f (PTrie t) = gtrieAt (z . fmap PTrie) i f1 t-    where-    f1 Nothing = fmap (fmap (gtrieSingleton j)) (f Nothing)-    f1 (Just ti) = gtrieAt id j f ti--   {-# INLINE gtrieLookup #-}   {-# INLINE gtrieInsert #-}   {-# INLINE gtrieDelete #-}@@ -688,7 +647,6 @@   {-# INLINE gtraverseWithKey #-}   {-# INLINE gmergeWithKey #-}   {-# INLINE gmapMaybeWithKey #-}-  {-# INLINE gtrieAt #-}  instance (GTrieKeyShow f, GTrieKeyShow g) => GTrieKeyShow (f :*: g) where   gtrieShowsPrec p (PTrie x)            = showsPrec p x@@ -785,13 +743,6 @@     hr t = do STrieR t' <- h (STrieR t)               return t' -  gtrieAt z (L1 k) f (STrieL x)   = gtrieAt (z . fmap STrieL) k f x-  gtrieAt z (R1 k) f (STrieR y)   = gtrieAt (z . fmap STrieR) k f y-  gtrieAt z (L1 k) f (STrieR y)   = fmap (z . Just . maybe (STrieR y) (\v -> STrieB (gtrieSingleton k v) y)) (f Nothing)-  gtrieAt z (R1 k) f (STrieL x)   = fmap (z . Just . maybe (STrieL x) (\v -> STrieB x (gtrieSingleton k v))) (f Nothing)-  gtrieAt z (L1 k) f (STrieB x y) = gtrieAt (z . Just . maybe (STrieR y) (`STrieB` y)) k f x-  gtrieAt z (R1 k) f (STrieB x y) = gtrieAt (z . Just . maybe (STrieL x) (x `STrieB`)) k f y-   {-# INLINE gtrieLookup #-}   {-# INLINE gtrieInsert #-}   {-# INLINE gtrieDelete #-}@@ -802,7 +753,6 @@   {-# INLINE gtraverseWithKey #-}   {-# INLINE gmergeWithKey #-}   {-# INLINE gmapMaybeWithKey #-}-  {-# INLINE gtrieAt #-}  instance (GTrieKeyShow f, GTrieKeyShow g) => GTrieKeyShow (f :+: g) where   gtrieShowsPrec p (STrieB x y)         = showParen (p > 10)@@ -833,7 +783,6 @@   gfoldWithKey f z (UTrie x)    = f U1 x z   gtraverseWithKey f (UTrie x)  = fmap UTrie (f U1 x)   gmergeWithKey f _ _ (UTrie x) (UTrie y) = fmap UTrie (f U1 x y)-  gtrieAt z _ f (UTrie x)       = fmap (z . fmap UTrie) (f (Just x))   {-# INLINE gtrieLookup #-}   {-# INLINE gtrieInsert #-}   {-# INLINE gtrieDelete #-}@@ -844,7 +793,6 @@   {-# INLINE gtraverseWithKey #-}   {-# INLINE gmergeWithKey #-}   {-# INLINE gmapMaybeWithKey #-}-  {-# INLINE gtrieAt #-}  instance GTrieKeyShow U1 where   gtrieShowsPrec p (UTrie x)    = showsPrec p x@@ -865,7 +813,6 @@   gfoldWithKey _ _ t            = t `seq` error "GTrieKey.V1: gmapFoldWithKey"   gtraverseWithKey _ t          = t `seq` error "GTrieKey.V1: gtraverseWithKey"   gmergeWithKey _ _ _ t u       = t `seq` u `seq` error "GTrieKey.V1: gmergeWithKey"-  gtrieAt _ k _ t               = k `seq` t `seq` error "GTrieKey.V1: gtrieAt"   {-# INLINE gtrieLookup #-}   {-# INLINE gtrieInsert #-}   {-# INLINE gtrieDelete #-}@@ -876,7 +823,6 @@   {-# INLINE gtraverseWithKey #-}   {-# INLINE gmergeWithKey #-}   {-# INLINE gmapMaybeWithKey #-}-  {-# INLINE gtrieAt #-}  instance GTrieKeyShow V1 where   gtrieShowsPrec _ _            = showString "()"