{-# LANGUAGE CPP, MultiParamTypeClasses, FlexibleInstances
, FlexibleContexts, UndecidableInstances #-}
#include "exports.h"
module Data.ListTrie.Map (MAP_EXPORTS) where
import Control.Arrow ((***), second)
import Control.Monad (liftM2)
import Data.Binary (Binary,get,put)
import qualified Data.DList as DL
import Data.Either (partitionEithers)
import Data.Function (on)
import qualified Data.Foldable as F
import qualified Data.List.NonEmpty as NE
import qualified Data.Maybe as Maybe
import Data.Semigroup (Semigroup(..), stimesIdempotent)
import Prelude hiding (filter, foldl, foldl', foldr, lookup, map, null)
import qualified Prelude
#if __GLASGOW_HASKELL__
import Text.Read (readPrec, lexP, parens, prec, Lexeme(Ident))
#endif
import qualified Data.ListTrie.Base as Base
import qualified Data.ListTrie.Base.Map as Map
import Data.ListTrie.Base.Classes (fmap')
import Data.ListTrie.Base.Map (Map, OrdMap)
#include "docs.h"
data TrieMap map k v = Tr (Maybe v) !(CMap map k v)
type CMap map k v = map k (TrieMap map k v)
instance Map map k => Base.Trie TrieMap Maybe map k where
mkTrie :: forall a. Maybe a -> CMap TrieMap map k a -> TrieMap map k a
mkTrie = Maybe a -> CMap map k a -> TrieMap map k a
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr
tParts :: forall a. TrieMap map k a -> (Maybe a, CMap TrieMap map k a)
tParts (Tr Maybe a
v CMap map k a
m) = (Maybe a
v,CMap map k a
m)
instance (Eq (map k (TrieMap map k a)), Eq a) => Eq (TrieMap map k a) where
Tr Maybe a
v1 map k (TrieMap map k a)
m1 == :: TrieMap map k a -> TrieMap map k a -> Bool
== Tr Maybe a
v2 map k (TrieMap map k a)
m2 = Maybe a
v1 Maybe a -> Maybe a -> Bool
forall a. Eq a => a -> a -> Bool
== Maybe a
v2 Bool -> Bool -> Bool
&& map k (TrieMap map k a)
m1 map k (TrieMap map k a) -> map k (TrieMap map k a) -> Bool
forall a. Eq a => a -> a -> Bool
== map k (TrieMap map k a)
m2
instance (Eq (map k (TrieMap map k a)), OrdMap map k, Ord k, Ord a)
=> Ord (TrieMap map k a)
where
compare :: TrieMap map k a -> TrieMap map k a -> Ordering
compare = [([k], a)] -> [([k], a)] -> Ordering
forall a. Ord a => a -> a -> Ordering
compare ([([k], a)] -> [([k], a)] -> Ordering)
-> (TrieMap map k a -> [([k], a)])
-> TrieMap map k a
-> TrieMap map k a
-> Ordering
forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
`on` TrieMap map k a -> [([k], a)]
forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> [([k], a)]
toAscList
instance Map map k => Semigroup (TrieMap map k a) where
<> :: TrieMap map k a -> TrieMap map k a -> TrieMap map k a
(<>) = TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> TrieMap map k a -> TrieMap map k a
union
sconcat :: NonEmpty (TrieMap map k a) -> TrieMap map k a
sconcat = [TrieMap map k a] -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
[TrieMap map k a] -> TrieMap map k a
unions ([TrieMap map k a] -> TrieMap map k a)
-> (NonEmpty (TrieMap map k a) -> [TrieMap map k a])
-> NonEmpty (TrieMap map k a)
-> TrieMap map k a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmpty (TrieMap map k a) -> [TrieMap map k a]
forall a. NonEmpty a -> [a]
NE.toList
stimes :: forall b. Integral b => b -> TrieMap map k a -> TrieMap map k a
stimes = b -> TrieMap map k a -> TrieMap map k a
forall b a. Integral b => b -> a -> a
stimesIdempotent
instance Map map k => Monoid (TrieMap map k a) where
mempty :: TrieMap map k a
mempty = TrieMap map k a
forall (map :: * -> * -> *) k a. Map map k => TrieMap map k a
empty
mappend :: TrieMap map k a -> TrieMap map k a -> TrieMap map k a
mappend = TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall a. Semigroup a => a -> a -> a
(<>)
mconcat :: [TrieMap map k a] -> TrieMap map k a
mconcat = [TrieMap map k a] -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
[TrieMap map k a] -> TrieMap map k a
unions
instance Map map k => Functor (TrieMap map k) where
fmap :: forall a b. (a -> b) -> TrieMap map k a -> TrieMap map k b
fmap = (a -> b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b) -> TrieMap map k a -> TrieMap map k b
map
instance Map map k => F.Foldable (TrieMap map k) where
foldl :: forall b a. (b -> a -> b) -> b -> TrieMap map k a -> b
foldl = (a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldl ((a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((b -> a -> b) -> a -> b -> b)
-> (b -> a -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (b -> a -> b) -> a -> b -> b
forall a b c. (a -> b -> c) -> b -> a -> c
flip
foldr :: forall a b. (a -> b -> b) -> b -> TrieMap map k a -> b
foldr = (a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldr
instance (Map map k, Traversable (map k)) => Traversable (TrieMap map k) where
traverse :: forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TrieMap map k a -> f (TrieMap map k b)
traverse a -> f b
f (Tr Maybe a
v CMap map k a
m) = Maybe b -> CMap map k b -> TrieMap map k b
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr (Maybe b -> CMap map k b -> TrieMap map k b)
-> f (Maybe b) -> f (CMap map k b -> TrieMap map k b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (a -> f b) -> Maybe a -> f (Maybe b)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Maybe a -> f (Maybe b)
traverse a -> f b
f Maybe a
v f (CMap map k b -> TrieMap map k b)
-> f (CMap map k b) -> f (TrieMap map k b)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (TrieMap map k a -> f (TrieMap map k b))
-> CMap map k a -> f (CMap map k b)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> map k a -> f (map k b)
traverse ((a -> f b) -> TrieMap map k a -> f (TrieMap map k b)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> TrieMap map k a -> f (TrieMap map k b)
traverse a -> f b
f) CMap map k a
m
instance (Map map k, Show k, Show a) => Show (TrieMap map k a) where
showsPrec :: Int -> TrieMap map k a -> ShowS
showsPrec Int
p TrieMap map k a
s = Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
> Int
10) (ShowS -> ShowS) -> ShowS -> ShowS
forall a b. (a -> b) -> a -> b
$
String -> ShowS
showString String
"fromList " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [([k], a)] -> ShowS
forall a. Show a => a -> ShowS
shows (TrieMap map k a -> [([k], a)]
forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> [([k], a)]
toList TrieMap map k a
s)
instance (Map map k, Read k, Read a) => Read (TrieMap map k a) where
#if __GLASGOW_HASKELL__
readPrec :: ReadPrec (TrieMap map k a)
readPrec = ReadPrec (TrieMap map k a) -> ReadPrec (TrieMap map k a)
forall a. ReadPrec a -> ReadPrec a
parens (ReadPrec (TrieMap map k a) -> ReadPrec (TrieMap map k a))
-> ReadPrec (TrieMap map k a) -> ReadPrec (TrieMap map k a)
forall a b. (a -> b) -> a -> b
$ Int -> ReadPrec (TrieMap map k a) -> ReadPrec (TrieMap map k a)
forall a. Int -> ReadPrec a -> ReadPrec a
prec Int
10 (ReadPrec (TrieMap map k a) -> ReadPrec (TrieMap map k a))
-> ReadPrec (TrieMap map k a) -> ReadPrec (TrieMap map k a)
forall a b. (a -> b) -> a -> b
$ do
Ident String
"fromList" <- ReadPrec Lexeme
lexP
([([k], a)] -> TrieMap map k a)
-> ReadPrec [([k], a)] -> ReadPrec (TrieMap map k a)
forall a b. (a -> b) -> ReadPrec a -> ReadPrec b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [([k], a)] -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
[([k], a)] -> TrieMap map k a
fromList ReadPrec [([k], a)]
forall a. Read a => ReadPrec a
readPrec
#else
readsPrec p = readParen (p > 10) $ \r -> do
("fromList", list) <- lex r
(xs, rest) <- readsPrec (p+1) list
[(fromList xs, rest)]
#endif
instance (Map map k, Binary k, Binary a) => Binary (TrieMap map k a) where
put :: TrieMap map k a -> Put
put (Tr Maybe a
v CMap map k a
m) = Maybe a -> Put
forall t. Binary t => t -> Put
put Maybe a
v Put -> Put -> Put
forall a b. PutM a -> PutM b -> PutM b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> ([(k, TrieMap map k a)] -> Put
forall t. Binary t => t -> Put
put ([(k, TrieMap map k a)] -> Put)
-> (CMap map k a -> [(k, TrieMap map k a)]) -> CMap map k a -> Put
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CMap map k a -> [(k, TrieMap map k a)]
forall a. map k a -> [(k, a)]
forall (m :: * -> * -> *) k a. Map m k => m k a -> [(k, a)]
Map.serializeToList (CMap map k a -> Put) -> CMap map k a -> Put
forall a b. (a -> b) -> a -> b
$ CMap map k a
m)
get :: Get (TrieMap map k a)
get = (Maybe a -> CMap map k a -> TrieMap map k a)
-> Get (Maybe a) -> Get (CMap map k a) -> Get (TrieMap map k a)
forall (m :: * -> *) a1 a2 r.
Monad m =>
(a1 -> a2 -> r) -> m a1 -> m a2 -> m r
liftM2 Maybe a -> CMap map k a -> TrieMap map k a
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr Get (Maybe a)
forall t. Binary t => Get t
get (Get [(k, TrieMap map k a)]
forall t. Binary t => Get t
get Get [(k, TrieMap map k a)]
-> ([(k, TrieMap map k a)] -> Get (CMap map k a))
-> Get (CMap map k a)
forall a b. Get a -> (a -> Get b) -> Get b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= CMap map k a -> Get (CMap map k a)
forall a. a -> Get a
forall (m :: * -> *) a. Monad m => a -> m a
return (CMap map k a -> Get (CMap map k a))
-> ([(k, TrieMap map k a)] -> CMap map k a)
-> [(k, TrieMap map k a)]
-> Get (CMap map k a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(k, TrieMap map k a)] -> CMap map k a
forall a. [(k, a)] -> map k a
forall (m :: * -> * -> *) k a. Map m k => [(k, a)] -> m k a
Map.deserializeFromList)
empty :: Map map k => TrieMap map k a
empty :: forall (map :: * -> * -> *) k a. Map map k => TrieMap map k a
empty = TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
trie map k a
Base.empty
singleton :: Map map k => [k] -> a -> TrieMap map k a
singleton :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> a -> TrieMap map k a
singleton = [k] -> a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
[k] -> a -> trie map k a
Base.singleton
insert :: Map map k => [k] -> a -> TrieMap map k a -> TrieMap map k a
insert :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> a -> TrieMap map k a -> TrieMap map k a
insert = [k] -> a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
[k] -> a -> trie map k a -> trie map k a
Base.insert
insert' :: Map map k => [k] -> a -> TrieMap map k a -> TrieMap map k a
insert' :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> a -> TrieMap map k a -> TrieMap map k a
insert' = [k] -> a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
[k] -> a -> trie map k a -> trie map k a
Base.insert'
insertWith :: Map map k
=> (a -> a -> a) -> [k] -> a -> TrieMap map k a -> TrieMap map k a
insertWith :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [k] -> a -> TrieMap map k a -> TrieMap map k a
insertWith = (a -> a -> a) -> [k] -> a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
(a -> a -> a) -> [k] -> a -> trie map k a -> trie map k a
Base.insertWith
insertWith' :: Map map k
=> (a -> a -> a) -> [k] -> a -> TrieMap map k a -> TrieMap map k a
insertWith' :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [k] -> a -> TrieMap map k a -> TrieMap map k a
insertWith' = (a -> a -> a) -> [k] -> a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
(a -> a -> a) -> [k] -> a -> trie map k a -> trie map k a
Base.insertWith'
delete :: Map map k => [k] -> TrieMap map k a -> TrieMap map k a
delete :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> TrieMap map k a
delete = [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
[k] -> trie map k a -> trie map k a
Base.delete
adjust :: Map map k => (a -> a) -> [k] -> TrieMap map k a -> TrieMap map k a
adjust :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a) -> [k] -> TrieMap map k a -> TrieMap map k a
adjust = (a -> a) -> [k] -> TrieMap map k a -> TrieMap map k a
forall (trie :: (* -> * -> *) -> * -> * -> *) (st :: * -> *)
(map :: * -> * -> *) k a.
Trie trie st map k =>
(a -> a) -> [k] -> trie map k a -> trie map k a
Base.adjust
adjust' :: Map map k => (a -> a) -> [k] -> TrieMap map k a -> TrieMap map k a
adjust' :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a) -> [k] -> TrieMap map k a -> TrieMap map k a
adjust' = (a -> a) -> [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
(a -> a) -> [k] -> trie map k a -> trie map k a
Base.adjust'
update :: Map map k
=> (a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
update :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
update a -> Maybe a
f [k]
k = (Maybe a, TrieMap map k a) -> TrieMap map k a
forall a b. (a, b) -> b
snd ((Maybe a, TrieMap map k a) -> TrieMap map k a)
-> (TrieMap map k a -> (Maybe a, TrieMap map k a))
-> TrieMap map k a
-> TrieMap map k a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Maybe a)
-> [k] -> TrieMap map k a -> (Maybe a, TrieMap map k a)
forall (map :: * -> * -> *) k a.
Map map k =>
(a -> Maybe a)
-> [k] -> TrieMap map k a -> (Maybe a, TrieMap map k a)
updateLookup a -> Maybe a
f [k]
k
updateLookup :: Map map k => (a -> Maybe a)
-> [k]
-> TrieMap map k a
-> (Maybe a, TrieMap map k a)
updateLookup :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> Maybe a)
-> [k] -> TrieMap map k a -> (Maybe a, TrieMap map k a)
updateLookup = (a -> Maybe a)
-> [k] -> TrieMap map k a -> (Maybe a, TrieMap map k a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
(a -> st a) -> [k] -> trie map k a -> (st a, trie map k a)
Base.updateLookup
alter :: Map map k
=> (Maybe a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
alter :: forall (map :: * -> * -> *) k a.
Map map k =>
(Maybe a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
alter = (Maybe a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
(st a -> st a) -> [k] -> trie map k a -> trie map k a
Base.alter
alter' :: Map map k
=> (Maybe a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
alter' :: forall (map :: * -> * -> *) k a.
Map map k =>
(Maybe a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
alter' = (Maybe a -> Maybe a) -> [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
(st a -> st a) -> [k] -> trie map k a -> trie map k a
Base.alter'
null :: Map map k => TrieMap map k a -> Bool
null :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> Bool
null = TrieMap map k a -> Bool
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k) =>
trie map k a -> Bool
Base.null
size :: (Map map k, Num n) => TrieMap map k a -> n
size :: forall (map :: * -> * -> *) k n a.
(Map map k, Num n) =>
TrieMap map k a -> n
size = TrieMap map k a -> n
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k n.
(Boolable (st a), Trie trie st map k, Num n) =>
trie map k a -> n
Base.size
size' :: (Map map k, Num n) => TrieMap map k a -> n
size' :: forall (map :: * -> * -> *) k n a.
(Map map k, Num n) =>
TrieMap map k a -> n
size' = TrieMap map k a -> n
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k n.
(Boolable (st a), Trie trie st map k, Num n) =>
trie map k a -> n
Base.size'
member :: Map map k => [k] -> TrieMap map k a -> Bool
member :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> Bool
member = [k] -> TrieMap map k a -> Bool
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
[k] -> trie map k a -> Bool
Base.member
notMember :: Map map k => [k] -> TrieMap map k a -> Bool
notMember :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> Bool
notMember = [k] -> TrieMap map k a -> Bool
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
[k] -> trie map k a -> Bool
Base.notMember
lookup :: Map map k => [k] -> TrieMap map k a -> Maybe a
lookup :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> Maybe a
lookup = [k] -> TrieMap map k a -> Maybe a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
[k] -> trie map k a -> st a
Base.lookup
lookupWithDefault :: Map map k => a -> [k] -> TrieMap map k a -> a
lookupWithDefault :: forall (map :: * -> * -> *) k a.
Map map k =>
a -> [k] -> TrieMap map k a -> a
lookupWithDefault = a -> [k] -> TrieMap map k a -> a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
a -> [k] -> trie map k a -> a
Base.lookupWithDefault
isSubmapOf :: (Map map k, Eq a) => TrieMap map k a -> TrieMap map k a -> Bool
isSubmapOf :: forall (map :: * -> * -> *) k a.
(Map map k, Eq a) =>
TrieMap map k a -> TrieMap map k a -> Bool
isSubmapOf = (a -> a -> Bool) -> TrieMap map k a -> TrieMap map k a -> Bool
forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
isSubmapOfBy a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(==)
isSubmapOfBy :: Map map k
=> (a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
isSubmapOfBy :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
isSubmapOfBy = (a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
forall (st :: * -> *) a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Boolable (st b), Trie trie st map k) =>
(a -> b -> Bool) -> trie map k a -> trie map k b -> Bool
Base.isSubmapOfBy
isProperSubmapOf :: (Map map k, Eq a)
=> TrieMap map k a -> TrieMap map k a -> Bool
isProperSubmapOf :: forall (map :: * -> * -> *) k a.
(Map map k, Eq a) =>
TrieMap map k a -> TrieMap map k a -> Bool
isProperSubmapOf = (a -> a -> Bool) -> TrieMap map k a -> TrieMap map k a -> Bool
forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
isProperSubmapOfBy a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(==)
isProperSubmapOfBy :: Map map k => (a -> b -> Bool)
-> TrieMap map k a
-> TrieMap map k b
-> Bool
isProperSubmapOfBy :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
isProperSubmapOfBy = (a -> b -> Bool) -> TrieMap map k a -> TrieMap map k b -> Bool
forall (st :: * -> *) a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Boolable (st b), Trie trie st map k) =>
(a -> b -> Bool) -> trie map k a -> trie map k b -> Bool
Base.isProperSubmapOfBy
defaultUnion :: a -> a -> a
defaultUnion :: forall a. a -> a -> a
defaultUnion = a -> a -> a
forall a b. a -> b -> a
const
union :: Map map k => TrieMap map k a -> TrieMap map k a -> TrieMap map k a
union :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> TrieMap map k a -> TrieMap map k a
union = (a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
unionWith a -> a -> a
forall a. a -> a -> a
defaultUnion
union' :: Map map k => TrieMap map k a -> TrieMap map k a -> TrieMap map k a
union' :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> TrieMap map k a -> TrieMap map k a
union' = (a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
unionWith' a -> a -> a
forall a. a -> a -> a
defaultUnion
unionWith :: Map map k => (a -> a -> a)
-> TrieMap map k a
-> TrieMap map k a
-> TrieMap map k a
unionWith :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
unionWith = (a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Unionable st a, Trie trie st map k) =>
(a -> a -> a) -> trie map k a -> trie map k a -> trie map k a
Base.unionWith
unionWith' :: Map map k => (a -> a -> a)
-> TrieMap map k a
-> TrieMap map k a
-> TrieMap map k a
unionWith' :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
unionWith' = (a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Unionable st a, Trie trie st map k) =>
(a -> a -> a) -> trie map k a -> trie map k a -> trie map k a
Base.unionWith'
unionWithKey :: Map map k => ([k] -> a -> a -> a)
-> TrieMap map k a
-> TrieMap map k a
-> TrieMap map k a
unionWithKey :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
unionWithKey = ([k] -> a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Unionable st a, Trie trie st map k) =>
([k] -> a -> a -> a)
-> trie map k a -> trie map k a -> trie map k a
Base.unionWithKey
unionWithKey' :: Map map k => ([k] -> a -> a -> a)
-> TrieMap map k a
-> TrieMap map k a
-> TrieMap map k a
unionWithKey' :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
unionWithKey' = ([k] -> a -> a -> a)
-> TrieMap map k a -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Unionable st a, Trie trie st map k) =>
([k] -> a -> a -> a)
-> trie map k a -> trie map k a -> trie map k a
Base.unionWithKey'
unions :: Map map k => [TrieMap map k a] -> TrieMap map k a
unions :: forall (map :: * -> * -> *) k a.
Map map k =>
[TrieMap map k a] -> TrieMap map k a
unions = (a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWith a -> a -> a
forall a. a -> a -> a
defaultUnion
unions' :: Map map k => [TrieMap map k a] -> TrieMap map k a
unions' :: forall (map :: * -> * -> *) k a.
Map map k =>
[TrieMap map k a] -> TrieMap map k a
unions' = (a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWith' a -> a -> a
forall a. a -> a -> a
defaultUnion
unionsWith :: Map map k
=> (a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWith :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWith = (a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Unionable st a, Trie trie st map k) =>
(a -> a -> a) -> [trie map k a] -> trie map k a
Base.unionsWith
unionsWith' :: Map map k
=> (a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWith' :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWith' = (a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Unionable st a, Trie trie st map k) =>
(a -> a -> a) -> [trie map k a] -> trie map k a
Base.unionsWith'
unionsWithKey :: Map map k
=> ([k] -> a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWithKey :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWithKey = ([k] -> a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Unionable st a, Trie trie st map k) =>
([k] -> a -> a -> a) -> [trie map k a] -> trie map k a
Base.unionsWithKey
unionsWithKey' :: Map map k
=> ([k] -> a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWithKey' :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
unionsWithKey' = ([k] -> a -> a -> a) -> [TrieMap map k a] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Unionable st a, Trie trie st map k) =>
([k] -> a -> a -> a) -> [trie map k a] -> trie map k a
Base.unionsWithKey'
difference :: Map map k
=> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
difference :: forall (map :: * -> * -> *) k a b.
Map map k =>
TrieMap map k a -> TrieMap map k b -> TrieMap map k a
difference = (a -> b -> Maybe a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> Maybe a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
differenceWith (\a
_ b
_ -> Maybe a
forall a. Maybe a
Nothing)
differenceWith :: Map map k => (a -> b -> Maybe a)
-> TrieMap map k a
-> TrieMap map k b
-> TrieMap map k a
differenceWith :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> Maybe a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
differenceWith = (a -> b -> Maybe a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
forall (st :: * -> *) a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Differentiable st a b, Trie trie st map k) =>
(a -> b -> Maybe a) -> trie map k a -> trie map k b -> trie map k a
Base.differenceWith
differenceWithKey :: Map map k => ([k] -> a -> b -> Maybe a)
-> TrieMap map k a
-> TrieMap map k b
-> TrieMap map k a
differenceWithKey :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> Maybe a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
differenceWithKey = ([k] -> a -> b -> Maybe a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
forall (st :: * -> *) a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Differentiable st a b, Trie trie st map k) =>
([k] -> a -> b -> Maybe a)
-> trie map k a -> trie map k b -> trie map k a
Base.differenceWithKey
intersection :: Map map k
=> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
intersection :: forall (map :: * -> * -> *) k a b.
Map map k =>
TrieMap map k a -> TrieMap map k b -> TrieMap map k a
intersection = (a -> b -> a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
forall (map :: * -> * -> *) k a b c.
Map map k =>
(a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
intersectionWith a -> b -> a
forall a b. a -> b -> a
const
intersection' :: Map map k
=> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
intersection' :: forall (map :: * -> * -> *) k a b.
Map map k =>
TrieMap map k a -> TrieMap map k b -> TrieMap map k a
intersection' = (a -> b -> a)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k a
forall (map :: * -> * -> *) k a b c.
Map map k =>
(a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
intersectionWith' a -> b -> a
forall a b. a -> b -> a
const
intersectionWith :: Map map k => (a -> b -> c)
-> TrieMap map k a
-> TrieMap map k b
-> TrieMap map k c
intersectionWith :: forall (map :: * -> * -> *) k a b c.
Map map k =>
(a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
intersectionWith = (a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
forall (st :: * -> *) c a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st c), Intersectable st a b c, Trie trie st map k) =>
(a -> b -> c) -> trie map k a -> trie map k b -> trie map k c
Base.intersectionWith
intersectionWith' :: Map map k => (a -> b -> c)
-> TrieMap map k a
-> TrieMap map k b
-> TrieMap map k c
intersectionWith' :: forall (map :: * -> * -> *) k a b c.
Map map k =>
(a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
intersectionWith' = (a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
forall (st :: * -> *) c a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st c), Intersectable st a b c, Trie trie st map k) =>
(a -> b -> c) -> trie map k a -> trie map k b -> trie map k c
Base.intersectionWith'
intersectionWithKey :: Map map k => ([k] -> a -> b -> c)
-> TrieMap map k a
-> TrieMap map k b
-> TrieMap map k c
intersectionWithKey :: forall (map :: * -> * -> *) k a b c.
Map map k =>
([k] -> a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
intersectionWithKey = ([k] -> a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
forall (st :: * -> *) c a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st c), Intersectable st a b c, Trie trie st map k) =>
([k] -> a -> b -> c)
-> trie map k a -> trie map k b -> trie map k c
Base.intersectionWithKey
intersectionWithKey' :: Map map k => ([k] -> a -> b -> c)
-> TrieMap map k a
-> TrieMap map k b
-> TrieMap map k c
intersectionWithKey' :: forall (map :: * -> * -> *) k a b c.
Map map k =>
([k] -> a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
intersectionWithKey' = ([k] -> a -> b -> c)
-> TrieMap map k a -> TrieMap map k b -> TrieMap map k c
forall (st :: * -> *) c a b (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st c), Intersectable st a b c, Trie trie st map k) =>
([k] -> a -> b -> c)
-> trie map k a -> trie map k b -> trie map k c
Base.intersectionWithKey'
filter :: Map map k => (a -> Bool) -> TrieMap map k a -> TrieMap map k a
filter :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> Bool) -> TrieMap map k a -> TrieMap map k a
filter = ([k] -> a -> Bool) -> TrieMap map k a -> TrieMap map k a
forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> Bool) -> TrieMap map k a -> TrieMap map k a
filterWithKey (([k] -> a -> Bool) -> TrieMap map k a -> TrieMap map k a)
-> ((a -> Bool) -> [k] -> a -> Bool)
-> (a -> Bool)
-> TrieMap map k a
-> TrieMap map k a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Bool) -> [k] -> a -> Bool
forall a b. a -> b -> a
const
filterWithKey :: Map map k
=> ([k] -> a -> Bool) -> TrieMap map k a -> TrieMap map k a
filterWithKey :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> Bool) -> TrieMap map k a -> TrieMap map k a
filterWithKey = ([k] -> a -> Bool) -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
([k] -> a -> Bool) -> trie map k a -> trie map k a
Base.filterWithKey
partition :: Map map k => (a -> Bool)
-> TrieMap map k a
-> (TrieMap map k a, TrieMap map k a)
partition :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> Bool)
-> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
partition = ([k] -> a -> Bool)
-> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> Bool)
-> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
partitionWithKey (([k] -> a -> Bool)
-> TrieMap map k a -> (TrieMap map k a, TrieMap map k a))
-> ((a -> Bool) -> [k] -> a -> Bool)
-> (a -> Bool)
-> TrieMap map k a
-> (TrieMap map k a, TrieMap map k a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Bool) -> [k] -> a -> Bool
forall a b. a -> b -> a
const
partitionWithKey :: Map map k => ([k] -> a -> Bool)
-> TrieMap map k a
-> (TrieMap map k a, TrieMap map k a)
partitionWithKey :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> Bool)
-> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
partitionWithKey = ([k] -> a -> Bool)
-> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
([k] -> a -> Bool) -> trie map k a -> (trie map k a, trie map k a)
Base.partitionWithKey
mapMaybe :: Map map k
=> (a -> Maybe b) -> TrieMap map k a -> TrieMap map k b
mapMaybe :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> Maybe b) -> TrieMap map k a -> TrieMap map k b
mapMaybe = ([k] -> a -> Maybe b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> Maybe b) -> TrieMap map k a -> TrieMap map k b
mapMaybeWithKey (([k] -> a -> Maybe b) -> TrieMap map k a -> TrieMap map k b)
-> ((a -> Maybe b) -> [k] -> a -> Maybe b)
-> (a -> Maybe b)
-> TrieMap map k a
-> TrieMap map k b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Maybe b) -> [k] -> a -> Maybe b
forall a b. a -> b -> a
const
mapMaybeWithKey :: Map map k
=> ([k] -> a -> Maybe b) -> TrieMap map k a -> TrieMap map k b
mapMaybeWithKey :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> Maybe b) -> TrieMap map k a -> TrieMap map k b
mapMaybeWithKey [k] -> a -> Maybe b
f =
[([k], b)] -> TrieMap map k b
forall (map :: * -> * -> *) k a.
Map map k =>
[([k], a)] -> TrieMap map k a
fromList ([([k], b)] -> TrieMap map k b)
-> (TrieMap map k a -> [([k], b)])
-> TrieMap map k a
-> TrieMap map k b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (([k], a) -> Maybe ([k], b)) -> [([k], a)] -> [([k], b)]
forall a b. (a -> Maybe b) -> [a] -> [b]
Maybe.mapMaybe (\([k]
k,a
v) -> (b -> ([k], b)) -> Maybe b -> Maybe ([k], b)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((,) [k]
k) ([k] -> a -> Maybe b
f [k]
k a
v)) ([([k], a)] -> [([k], b)])
-> (TrieMap map k a -> [([k], a)]) -> TrieMap map k a -> [([k], b)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TrieMap map k a -> [([k], a)]
forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> [([k], a)]
toList
mapEither :: Map map k => (a -> Either b c)
-> TrieMap map k a
-> (TrieMap map k b, TrieMap map k c)
mapEither :: forall (map :: * -> * -> *) k a b c.
Map map k =>
(a -> Either b c)
-> TrieMap map k a -> (TrieMap map k b, TrieMap map k c)
mapEither = ([k] -> a -> Either b c)
-> TrieMap map k a -> (TrieMap map k b, TrieMap map k c)
forall (map :: * -> * -> *) k a b c.
Map map k =>
([k] -> a -> Either b c)
-> TrieMap map k a -> (TrieMap map k b, TrieMap map k c)
mapEitherWithKey (([k] -> a -> Either b c)
-> TrieMap map k a -> (TrieMap map k b, TrieMap map k c))
-> ((a -> Either b c) -> [k] -> a -> Either b c)
-> (a -> Either b c)
-> TrieMap map k a
-> (TrieMap map k b, TrieMap map k c)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> Either b c) -> [k] -> a -> Either b c
forall a b. a -> b -> a
const
mapEitherWithKey :: Map map k => ([k] -> a -> Either b c)
-> TrieMap map k a
-> (TrieMap map k b, TrieMap map k c)
mapEitherWithKey :: forall (map :: * -> * -> *) k a b c.
Map map k =>
([k] -> a -> Either b c)
-> TrieMap map k a -> (TrieMap map k b, TrieMap map k c)
mapEitherWithKey [k] -> a -> Either b c
f =
([([k], b)] -> TrieMap map k b
forall (map :: * -> * -> *) k a.
Map map k =>
[([k], a)] -> TrieMap map k a
fromList ([([k], b)] -> TrieMap map k b)
-> ([([k], c)] -> TrieMap map k c)
-> ([([k], b)], [([k], c)])
-> (TrieMap map k b, TrieMap map k c)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** [([k], c)] -> TrieMap map k c
forall (map :: * -> * -> *) k a.
Map map k =>
[([k], a)] -> TrieMap map k a
fromList) (([([k], b)], [([k], c)]) -> (TrieMap map k b, TrieMap map k c))
-> (TrieMap map k a -> ([([k], b)], [([k], c)]))
-> TrieMap map k a
-> (TrieMap map k b, TrieMap map k c)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Either ([k], b) ([k], c)] -> ([([k], b)], [([k], c)])
forall a b. [Either a b] -> ([a], [b])
partitionEithers ([Either ([k], b) ([k], c)] -> ([([k], b)], [([k], c)]))
-> (TrieMap map k a -> [Either ([k], b) ([k], c)])
-> TrieMap map k a
-> ([([k], b)], [([k], c)])
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
(([k], a) -> Either ([k], b) ([k], c))
-> [([k], a)] -> [Either ([k], b) ([k], c)]
forall a b. (a -> b) -> [a] -> [b]
Prelude.map (\([k]
k,a
v) -> (b -> Either ([k], b) ([k], c))
-> (c -> Either ([k], b) ([k], c))
-> Either b c
-> Either ([k], b) ([k], c)
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (([k], b) -> Either ([k], b) ([k], c)
forall a b. a -> Either a b
Left (([k], b) -> Either ([k], b) ([k], c))
-> (b -> ([k], b)) -> b -> Either ([k], b) ([k], c)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (,) [k]
k) (([k], c) -> Either ([k], b) ([k], c)
forall a b. b -> Either a b
Right (([k], c) -> Either ([k], b) ([k], c))
-> (c -> ([k], c)) -> c -> Either ([k], b) ([k], c)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (,) [k]
k) ([k] -> a -> Either b c
f [k]
k a
v)) ([([k], a)] -> [Either ([k], b) ([k], c)])
-> (TrieMap map k a -> [([k], a)])
-> TrieMap map k a
-> [Either ([k], b) ([k], c)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
TrieMap map k a -> [([k], a)]
forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> [([k], a)]
toList
map :: Map map k => (a -> b) -> TrieMap map k a -> TrieMap map k b
map :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b) -> TrieMap map k a -> TrieMap map k b
map = ((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
genericMap (a -> b) -> Maybe a -> Maybe b
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
map' :: Map map k => (a -> b) -> TrieMap map k a -> TrieMap map k b
map' :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b) -> TrieMap map k a -> TrieMap map k b
map' = ((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
genericMap (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b.
(Boolable (f a), Unwrappable f, Alt f b) =>
(a -> b) -> f a -> f b
fmap'
genericMap :: Map map k => ((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
genericMap :: forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
genericMap (a -> b) -> Maybe a -> Maybe b
myFmap a -> b
f (Tr Maybe a
v CMap map k a
m) = Maybe b -> CMap map k b -> TrieMap map k b
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr ((a -> b) -> Maybe a -> Maybe b
myFmap a -> b
f Maybe a
v)
((TrieMap map k a -> TrieMap map k b)
-> CMap map k a -> CMap map k b
forall a b. (a -> b) -> map k a -> map k b
forall (m :: * -> * -> *) k a b.
Map m k =>
(a -> b) -> m k a -> m k b
Map.map (((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> (a -> b) -> TrieMap map k a -> TrieMap map k b
genericMap (a -> b) -> Maybe a -> Maybe b
myFmap a -> b
f) CMap map k a
m)
mapWithKey :: Map map k
=> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
mapWithKey :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
mapWithKey = ((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
genericMapWithKey (a -> b) -> Maybe a -> Maybe b
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
mapWithKey' :: Map map k
=> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
mapWithKey' :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
mapWithKey' = ((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
genericMapWithKey (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b.
(Boolable (f a), Unwrappable f, Alt f b) =>
(a -> b) -> f a -> f b
fmap'
genericMapWithKey :: Map map k
=> ((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
genericMapWithKey :: forall (map :: * -> * -> *) k a b.
Map map k =>
((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b) -> TrieMap map k a -> TrieMap map k b
genericMapWithKey = DList k
-> ((a -> b) -> Maybe a -> Maybe b)
-> ([k] -> a -> b)
-> TrieMap map k a
-> TrieMap map k b
forall {map :: * -> * -> *} {a} {t} {v} {v}.
Map map a =>
DList a
-> (t -> Maybe v -> Maybe v)
-> ([a] -> t)
-> TrieMap map a v
-> TrieMap map a v
go DList k
forall a. DList a
DL.empty
where
go :: DList a
-> (t -> Maybe v -> Maybe v)
-> ([a] -> t)
-> TrieMap map a v
-> TrieMap map a v
go DList a
k t -> Maybe v -> Maybe v
myFmap [a] -> t
f (Tr Maybe v
v CMap map a v
m) =
Maybe v -> CMap map a v -> TrieMap map a v
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr (t -> Maybe v -> Maybe v
myFmap ([a] -> t
f ([a] -> t) -> [a] -> t
forall a b. (a -> b) -> a -> b
$ DList a -> [a]
forall a. DList a -> [a]
DL.toList DList a
k) Maybe v
v)
((a -> TrieMap map a v -> TrieMap map a v)
-> CMap map a v -> CMap map a v
forall a b. (a -> a -> b) -> map a a -> map a b
forall (m :: * -> * -> *) k a b.
Map m k =>
(k -> a -> b) -> m k a -> m k b
Map.mapWithKey (\a
x -> DList a
-> (t -> Maybe v -> Maybe v)
-> ([a] -> t)
-> TrieMap map a v
-> TrieMap map a v
go (DList a
k DList a -> a -> DList a
forall a. DList a -> a -> DList a
`DL.snoc` a
x) t -> Maybe v -> Maybe v
myFmap [a] -> t
f) CMap map a v
m)
mapKeys :: (Map map k1, Map map k2)
=> ([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a
mapKeys :: forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a
mapKeys = (a -> a -> a)
-> ([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a
forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(a -> a -> a)
-> ([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a
mapKeysWith a -> a -> a
forall a b. a -> b -> a
const
mapKeysWith :: (Map map k1, Map map k2) => (a -> a -> a)
-> ([k1] -> [k2])
-> TrieMap map k1 a
-> TrieMap map k2 a
mapKeysWith :: forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(a -> a -> a)
-> ([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a
mapKeysWith = ([([k2], a)] -> TrieMap map k2 a)
-> ([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k1 k2.
(Boolable (st a), Trie trie st map k1, Trie trie st map k2) =>
([([k2], a)] -> trie map k2 a)
-> ([k1] -> [k2]) -> trie map k1 a -> trie map k2 a
Base.mapKeysWith (([([k2], a)] -> TrieMap map k2 a)
-> ([k1] -> [k2]) -> TrieMap map k1 a -> TrieMap map k2 a)
-> ((a -> a -> a) -> [([k2], a)] -> TrieMap map k2 a)
-> (a -> a -> a)
-> ([k1] -> [k2])
-> TrieMap map k1 a
-> TrieMap map k2 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> a -> a) -> [([k2], a)] -> TrieMap map k2 a
forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [([k], a)] -> TrieMap map k a
fromListWith
mapInKeys :: (Map map k1, Map map k2)
=> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeys :: forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeys = (a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeysWith a -> a -> a
forall a. a -> a -> a
defaultUnion
mapInKeys' :: (Map map k1, Map map k2)
=> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeys' :: forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeys' = (a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeysWith' a -> a -> a
forall a. a -> a -> a
defaultUnion
mapInKeysWith :: (Map map k1, Map map k2) => (a -> a -> a)
-> (k1 -> k2)
-> TrieMap map k1 a
-> TrieMap map k2 a
mapInKeysWith :: forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeysWith = (a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k1 k2.
(Unionable st a, Trie trie st map k1, Trie trie st map k2) =>
(a -> a -> a) -> (k1 -> k2) -> trie map k1 a -> trie map k2 a
Base.mapInKeysWith
mapInKeysWith' :: (Map map k1, Map map k2) => (a -> a -> a)
-> (k1 -> k2)
-> TrieMap map k1 a
-> TrieMap map k2 a
mapInKeysWith' :: forall (map :: * -> * -> *) k1 k2 a.
(Map map k1, Map map k2) =>
(a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
mapInKeysWith' = (a -> a -> a) -> (k1 -> k2) -> TrieMap map k1 a -> TrieMap map k2 a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k1 k2.
(Unionable st a, Trie trie st map k1, Trie trie st map k2) =>
(a -> a -> a) -> (k1 -> k2) -> trie map k1 a -> trie map k2 a
Base.mapInKeysWith'
mapAccum :: Map map k => (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccum :: forall (map :: * -> * -> *) k acc a b.
Map map k =>
(acc -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccum = ((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c. (a -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
Map m k =>
(a -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccum (((acc, Maybe b) -> b -> (acc, Maybe b))
-> b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b c. (a -> b -> c) -> b -> a -> c
flip (acc, Maybe b) -> b -> (acc, Maybe b)
forall a b. a -> b -> a
const)
mapAccum' :: Map map k => (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccum' :: forall (map :: * -> * -> *) k acc a b.
Map map k =>
(acc -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccum' = ((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c. (a -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
Map m k =>
(a -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccum b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b. a -> b -> b
seq
mapAccumWithKey :: Map map k => (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumWithKey :: forall (map :: * -> * -> *) k acc a b.
Map map k =>
(acc -> [k] -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumWithKey = ((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey (acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c.
(a -> k -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
Map m k =>
(a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumWithKey (((acc, Maybe b) -> b -> (acc, Maybe b))
-> b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b c. (a -> b -> c) -> b -> a -> c
flip (acc, Maybe b) -> b -> (acc, Maybe b)
forall a b. a -> b -> a
const)
mapAccumWithKey' :: Map map k => (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumWithKey' :: forall (map :: * -> * -> *) k acc a b.
Map map k =>
(acc -> [k] -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumWithKey' = ((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey (acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c.
(a -> k -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
Map m k =>
(a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumWithKey b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b. a -> b -> b
seq
mapAccumAsc :: OrdMap map k => (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumAsc :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumAsc = ((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c. (a -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumAsc (((acc, Maybe b) -> b -> (acc, Maybe b))
-> b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b c. (a -> b -> c) -> b -> a -> c
flip (acc, Maybe b) -> b -> (acc, Maybe b)
forall a b. a -> b -> a
const)
mapAccumAsc' :: OrdMap map k => (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumAsc' :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumAsc' = ((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c. (a -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumAsc b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b. a -> b -> b
seq
mapAccumAscWithKey :: OrdMap map k => (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumAscWithKey :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> [k] -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumAscWithKey = ((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey (acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c.
(a -> k -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumAscWithKey (((acc, Maybe b) -> b -> (acc, Maybe b))
-> b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b c. (a -> b -> c) -> b -> a -> c
flip (acc, Maybe b) -> b -> (acc, Maybe b)
forall a b. a -> b -> a
const)
mapAccumAscWithKey' :: OrdMap map k => (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumAscWithKey' :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> [k] -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumAscWithKey' = ((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey (acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c.
(a -> k -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumAscWithKey b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b. a -> b -> b
seq
mapAccumDesc :: OrdMap map k => (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumDesc :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumDesc = ((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c. (a -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumDesc (((acc, Maybe b) -> b -> (acc, Maybe b))
-> b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b c. (a -> b -> c) -> b -> a -> c
flip (acc, Maybe b) -> b -> (acc, Maybe b)
forall a b. a -> b -> a
const)
mapAccumDesc' :: OrdMap map k => (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumDesc' :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumDesc' = ((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c. (a -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumDesc b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b. a -> b -> b
seq
mapAccumDescWithKey :: OrdMap map k => (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumDescWithKey :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> [k] -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumDescWithKey =
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey (acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c.
(a -> k -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumDescWithKey (((acc, Maybe b) -> b -> (acc, Maybe b))
-> b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b c. (a -> b -> c) -> b -> a -> c
flip (acc, Maybe b) -> b -> (acc, Maybe b)
forall a b. a -> b -> a
const)
mapAccumDescWithKey' :: OrdMap map k => (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
mapAccumDescWithKey' :: forall (map :: * -> * -> *) k acc a b.
OrdMap map k =>
(acc -> [k] -> a -> (acc, b))
-> acc -> TrieMap map k a -> (acc, TrieMap map k b)
mapAccumDescWithKey' = ((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey (acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
forall a b c.
(a -> k -> b -> (a, c)) -> a -> map k b -> (a, map k c)
forall (m :: * -> * -> *) k a b c.
OrdMap m k =>
(a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c)
Map.mapAccumDescWithKey b -> (acc, Maybe b) -> (acc, Maybe b)
forall a b. a -> b -> b
seq
genericMapAccum :: Map map k
=> ( (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc
-> CMap map k a
-> (acc, CMap map k b)
)
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum :: forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
subMapAccum b -> (acc, Maybe b) -> (acc, Maybe b)
seeq acc -> a -> (acc, b)
f acc
acc (Tr Maybe a
mv CMap map k a
m) =
let (acc
acc', Maybe b
mv') =
case Maybe a
mv of
Maybe a
Nothing -> (acc
acc, Maybe b
forall a. Maybe a
Nothing)
Just a
v ->
let (acc
acc'', b
v') = acc -> a -> (acc, b)
f acc
acc a
v
in b
v' b -> (acc, Maybe b) -> (acc, Maybe b)
`seeq` (acc
acc'', b -> Maybe b
forall a. a -> Maybe a
Just b
v')
in (CMap map k b -> TrieMap map k b)
-> (acc, CMap map k b) -> (acc, TrieMap map k b)
forall b c d. (b -> c) -> (d, b) -> (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (Maybe b -> CMap map k b -> TrieMap map k b
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr Maybe b
mv') ((acc, CMap map k b) -> (acc, TrieMap map k b))
-> (acc, CMap map k b) -> (acc, TrieMap map k b)
forall a b. (a -> b) -> a -> b
$
(acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
subMapAccum (((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccum (acc -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b)
subMapAccum b -> (acc, Maybe b) -> (acc, Maybe b)
seeq acc -> a -> (acc, b)
f) acc
acc' CMap map k a
m
genericMapAccumWithKey :: Map map k
=> ( ( acc
-> k
-> TrieMap map k a
-> (acc, TrieMap map k b)
)
-> acc
-> CMap map k a
-> (acc, CMap map k b)
)
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey :: forall (map :: * -> * -> *) k acc a b.
Map map k =>
((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
genericMapAccumWithKey = DList k
-> ((acc -> k -> TrieMap map k a -> (acc, TrieMap map k b))
-> acc -> CMap map k a -> (acc, CMap map k b))
-> (b -> (acc, Maybe b) -> (acc, Maybe b))
-> (acc -> [k] -> a -> (acc, b))
-> acc
-> TrieMap map k a
-> (acc, TrieMap map k b)
forall {a} {t} {map :: * -> * -> *} {k} {v} {d}
{map :: * -> * -> *} {k} {v} {b} {a}.
DList a
-> ((t -> a -> TrieMap map k v -> (d, TrieMap map k v))
-> t -> CMap map k v -> (d, CMap map k v))
-> (b -> (a, Maybe b) -> (t, Maybe v))
-> (t -> [a] -> v -> (a, b))
-> t
-> TrieMap map k v
-> (d, TrieMap map k v)
go DList k
forall a. DList a
DL.empty
where
go :: DList a
-> ((t -> a -> TrieMap map k v -> (d, TrieMap map k v))
-> t -> CMap map k v -> (d, CMap map k v))
-> (b -> (a, Maybe b) -> (t, Maybe v))
-> (t -> [a] -> v -> (a, b))
-> t
-> TrieMap map k v
-> (d, TrieMap map k v)
go DList a
k (t -> a -> TrieMap map k v -> (d, TrieMap map k v))
-> t -> CMap map k v -> (d, CMap map k v)
subMapAccum b -> (a, Maybe b) -> (t, Maybe v)
seeq t -> [a] -> v -> (a, b)
f t
acc (Tr Maybe v
mv CMap map k v
m) =
let (t
acc', Maybe v
mv') =
case Maybe v
mv of
Maybe v
Nothing -> (t
acc, Maybe v
forall a. Maybe a
Nothing)
Just v
v ->
let (a
acc'', b
v') = t -> [a] -> v -> (a, b)
f t
acc (DList a -> [a]
forall a. DList a -> [a]
DL.toList DList a
k) v
v
in b
v' b -> (a, Maybe b) -> (t, Maybe v)
`seeq` (a
acc'', b -> Maybe b
forall a. a -> Maybe a
Just b
v')
in (CMap map k v -> TrieMap map k v)
-> (d, CMap map k v) -> (d, TrieMap map k v)
forall b c d. (b -> c) -> (d, b) -> (d, c)
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (Maybe v -> CMap map k v -> TrieMap map k v
forall (map :: * -> * -> *) k v.
Maybe v -> CMap map k v -> TrieMap map k v
Tr Maybe v
mv') ((d, CMap map k v) -> (d, TrieMap map k v))
-> (d, CMap map k v) -> (d, TrieMap map k v)
forall a b. (a -> b) -> a -> b
$
(t -> a -> TrieMap map k v -> (d, TrieMap map k v))
-> t -> CMap map k v -> (d, CMap map k v)
subMapAccum (\t
a a
x -> DList a
-> ((t -> a -> TrieMap map k v -> (d, TrieMap map k v))
-> t -> CMap map k v -> (d, CMap map k v))
-> (b -> (a, Maybe b) -> (t, Maybe v))
-> (t -> [a] -> v -> (a, b))
-> t
-> TrieMap map k v
-> (d, TrieMap map k v)
go (DList a
k DList a -> a -> DList a
forall a. DList a -> a -> DList a
`DL.snoc` a
x) (t -> a -> TrieMap map k v -> (d, TrieMap map k v))
-> t -> CMap map k v -> (d, CMap map k v)
subMapAccum b -> (a, Maybe b) -> (t, Maybe v)
seeq t -> [a] -> v -> (a, b)
f t
a)
t
acc' CMap map k v
m
foldr :: Map map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldr :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldr = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrWithKey (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldrWithKey :: Map map k => ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrWithKey :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrWithKey = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldrWithKey
foldrAsc :: OrdMap map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldrAsc :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldrAsc = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrAscWithKey (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldrAscWithKey :: OrdMap map k
=> ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrAscWithKey :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrAscWithKey = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldrAscWithKey
foldrDesc :: OrdMap map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldrDesc :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldrDesc = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrDescWithKey (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldrDescWithKey :: OrdMap map k
=> ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrDescWithKey :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldrDescWithKey = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldrDescWithKey
foldl :: Map map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldl :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldl = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlWithKey (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldlWithKey :: Map map k => ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlWithKey :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlWithKey = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldlWithKey
foldlAsc :: OrdMap map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldlAsc :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldlAsc = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlAscWithKey (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldlAscWithKey :: OrdMap map k
=> ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlAscWithKey :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlAscWithKey = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldlAscWithKey
foldlDesc :: OrdMap map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldlDesc :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldlDesc = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlDescWithKey (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldlDescWithKey :: OrdMap map k
=> ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlDescWithKey :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlDescWithKey = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldlDescWithKey
foldl' :: Map map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldl' :: forall (map :: * -> * -> *) k a b.
Map map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldl' = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlWithKey' (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldlWithKey' :: Map map k => ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlWithKey' :: forall (map :: * -> * -> *) k a b.
Map map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlWithKey' = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldlWithKey'
foldlAsc' :: OrdMap map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldlAsc' :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldlAsc' = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlAscWithKey' (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldlAscWithKey' :: OrdMap map k
=> ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlAscWithKey' :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlAscWithKey' = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldlAscWithKey'
foldlDesc' :: OrdMap map k => (a -> b -> b) -> b -> TrieMap map k a -> b
foldlDesc' :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
(a -> b -> b) -> b -> TrieMap map k a -> b
foldlDesc' = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlDescWithKey' (([k] -> a -> b -> b) -> b -> TrieMap map k a -> b)
-> ((a -> b -> b) -> [k] -> a -> b -> b)
-> (a -> b -> b)
-> b
-> TrieMap map k a
-> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b -> b) -> [k] -> a -> b -> b
forall a b. a -> b -> a
const
foldlDescWithKey' :: OrdMap map k
=> ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlDescWithKey' :: forall (map :: * -> * -> *) k a b.
OrdMap map k =>
([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
foldlDescWithKey' = ([k] -> a -> b -> b) -> b -> TrieMap map k a -> b
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k b.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
([k] -> a -> b -> b) -> b -> trie map k a -> b
Base.foldlDescWithKey'
toList :: Map map k => TrieMap map k a -> [([k],a)]
toList :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> [([k], a)]
toList = TrieMap map k a -> [([k], a)]
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k) =>
trie map k a -> [([k], a)]
Base.toList
toAscList :: OrdMap map k => TrieMap map k a -> [([k],a)]
toAscList :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> [([k], a)]
toAscList = TrieMap map k a -> [([k], a)]
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> [([k], a)]
Base.toAscList
toDescList :: OrdMap map k => TrieMap map k a -> [([k],a)]
toDescList :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> [([k], a)]
toDescList = TrieMap map k a -> [([k], a)]
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> [([k], a)]
Base.toDescList
fromList :: Map map k => [([k],a)] -> TrieMap map k a
fromList :: forall (map :: * -> * -> *) k a.
Map map k =>
[([k], a)] -> TrieMap map k a
fromList = [([k], a)] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
[([k], a)] -> trie map k a
Base.fromList
fromListWith :: Map map k => (a -> a -> a) -> [([k],a)] -> TrieMap map k a
fromListWith :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [([k], a)] -> TrieMap map k a
fromListWith = (a -> a -> a) -> [([k], a)] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
(a -> a -> a) -> [([k], a)] -> trie map k a
Base.fromListWith
fromListWith' :: Map map k => (a -> a -> a) -> [([k],a)] -> TrieMap map k a
fromListWith' :: forall (map :: * -> * -> *) k a.
Map map k =>
(a -> a -> a) -> [([k], a)] -> TrieMap map k a
fromListWith' = (a -> a -> a) -> [([k], a)] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
(a -> a -> a) -> [([k], a)] -> trie map k a
Base.fromListWith'
fromListWithKey :: Map map k
=> ([k] -> a -> a -> a) -> [([k],a)] -> TrieMap map k a
fromListWithKey :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> a -> a) -> [([k], a)] -> TrieMap map k a
fromListWithKey = ([k] -> a -> a -> a) -> [([k], a)] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
([k] -> a -> a -> a) -> [([k], a)] -> trie map k a
Base.fromListWithKey
fromListWithKey' :: Map map k
=> ([k] -> a -> a -> a) -> [([k],a)] -> TrieMap map k a
fromListWithKey' :: forall (map :: * -> * -> *) k a.
Map map k =>
([k] -> a -> a -> a) -> [([k], a)] -> TrieMap map k a
fromListWithKey' = ([k] -> a -> a -> a) -> [([k], a)] -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
([k] -> a -> a -> a) -> [([k], a)] -> trie map k a
Base.fromListWithKey'
minView :: OrdMap map k => TrieMap map k a -> (Maybe ([k], a), TrieMap map k a)
minView :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> (Maybe ([k], a), TrieMap map k a)
minView = TrieMap map k a -> (Maybe ([k], a), TrieMap map k a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> (Maybe ([k], a), trie map k a)
Base.minView
maxView :: OrdMap map k => TrieMap map k a -> (Maybe ([k], a), TrieMap map k a)
maxView :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> (Maybe ([k], a), TrieMap map k a)
maxView = TrieMap map k a -> (Maybe ([k], a), TrieMap map k a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> (Maybe ([k], a), trie map k a)
Base.maxView
findMin :: OrdMap map k => TrieMap map k a -> Maybe ([k], a)
findMin :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> Maybe ([k], a)
findMin = TrieMap map k a -> Maybe ([k], a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> Maybe ([k], a)
Base.findMin
findMax :: OrdMap map k => TrieMap map k a -> Maybe ([k], a)
findMax :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> Maybe ([k], a)
findMax = TrieMap map k a -> Maybe ([k], a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> Maybe ([k], a)
Base.findMax
deleteMin :: OrdMap map k => TrieMap map k a -> TrieMap map k a
deleteMin :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> TrieMap map k a
deleteMin = TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> trie map k a
Base.deleteMin
deleteMax :: OrdMap map k => TrieMap map k a -> TrieMap map k a
deleteMax :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
TrieMap map k a -> TrieMap map k a
deleteMax = TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k, OrdMap map k) =>
trie map k a -> trie map k a
Base.deleteMax
split :: OrdMap map k
=> [k] -> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
split :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
[k] -> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
split = [k] -> TrieMap map k a -> (TrieMap map k a, TrieMap map k a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k, OrdMap map k) =>
[k] -> trie map k a -> (trie map k a, trie map k a)
Base.split
splitLookup :: OrdMap map k => [k]
-> TrieMap map k a
-> (TrieMap map k a, Maybe a, TrieMap map k a)
splitLookup :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
[k]
-> TrieMap map k a -> (TrieMap map k a, Maybe a, TrieMap map k a)
splitLookup = [k]
-> TrieMap map k a -> (TrieMap map k a, Maybe a, TrieMap map k a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k, OrdMap map k) =>
[k] -> trie map k a -> (trie map k a, st a, trie map k a)
Base.splitLookup
findPredecessor :: OrdMap map k => [k] -> TrieMap map k a -> Maybe ([k], a)
findPredecessor :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
[k] -> TrieMap map k a -> Maybe ([k], a)
findPredecessor = [k] -> TrieMap map k a -> Maybe ([k], a)
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
[k] -> trie map k a -> Maybe ([k], a)
Base.findPredecessor
findSuccessor :: OrdMap map k => [k] -> TrieMap map k a -> Maybe ([k], a)
findSuccessor :: forall (map :: * -> * -> *) k a.
OrdMap map k =>
[k] -> TrieMap map k a -> Maybe ([k], a)
findSuccessor = [k] -> TrieMap map k a -> Maybe ([k], a)
forall (trie :: (* -> * -> *) -> * -> * -> *) (map :: * -> * -> *)
(st :: * -> *) k a.
(Boolable (st a), Trie trie st map k, OrdMap map k) =>
[k] -> trie map k a -> Maybe ([k], a)
Base.findSuccessor
lookupPrefix :: Map map k => [k] -> TrieMap map k a -> TrieMap map k a
lookupPrefix :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> TrieMap map k a
lookupPrefix = [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
[k] -> trie map k a -> trie map k a
Base.lookupPrefix
addPrefix :: Map map k => [k] -> TrieMap map k a -> TrieMap map k a
addPrefix :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> TrieMap map k a
addPrefix = [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
[k] -> trie map k a -> trie map k a
Base.addPrefix
deletePrefix :: Map map k => [k] -> TrieMap map k a -> TrieMap map k a
deletePrefix :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> TrieMap map k a
deletePrefix = [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
[k] -> trie map k a -> trie map k a
Base.deletePrefix
deleteSuffixes :: Map map k => [k] -> TrieMap map k a -> TrieMap map k a
deleteSuffixes :: forall (map :: * -> * -> *) k a.
Map map k =>
[k] -> TrieMap map k a -> TrieMap map k a
deleteSuffixes = [k] -> TrieMap map k a -> TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Boolable (st a), Trie trie st map k) =>
[k] -> trie map k a -> trie map k a
Base.deleteSuffixes
splitPrefix :: Map map k => TrieMap map k a -> ([k], Maybe a, TrieMap map k a)
splitPrefix :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> ([k], Maybe a, TrieMap map k a)
splitPrefix = TrieMap map k a -> ([k], Maybe a, TrieMap map k a)
forall (trie :: (* -> * -> *) -> * -> * -> *) (map :: * -> * -> *)
(st :: * -> *) k a.
(Alt st a, Trie trie st map k) =>
trie map k a -> ([k], st a, trie map k a)
Base.splitPrefix
children :: Map map k => TrieMap map k a -> map k (TrieMap map k a)
children :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> map k (TrieMap map k a)
children = TrieMap map k a -> CMap TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Boolable (st a), Trie trie st map k) =>
trie map k a -> CMap trie map k a
Base.children
children1 :: Map map k => TrieMap map k a -> map k (TrieMap map k a)
children1 :: forall (map :: * -> * -> *) k a.
Map map k =>
TrieMap map k a -> map k (TrieMap map k a)
children1 = TrieMap map k a -> CMap TrieMap map k a
forall (st :: * -> *) a (trie :: (* -> * -> *) -> * -> * -> *)
(map :: * -> * -> *) k.
(Alt st a, Trie trie st map k) =>
trie map k a -> CMap trie map k a
Base.children1
showTrie :: (Show k, Show a, Map map k) => TrieMap map k a -> ShowS
showTrie :: forall k a (map :: * -> * -> *).
(Show k, Show a, Map map k) =>
TrieMap map k a -> ShowS
showTrie = (Maybe a -> ShowS) -> TrieMap map k a -> ShowS
forall k (trie :: (* -> * -> *) -> * -> * -> *) (st :: * -> *)
(map :: * -> * -> *) a.
(Show k, Trie trie st map k) =>
(st a -> ShowS) -> trie map k a -> ShowS
Base.showTrieWith ((Maybe a -> ShowS) -> TrieMap map k a -> ShowS)
-> (Maybe a -> ShowS) -> TrieMap map k a -> ShowS
forall a b. (a -> b) -> a -> b
$ \Maybe a
mv -> case Maybe a
mv of
Maybe a
Nothing -> Char -> ShowS
showChar Char
' '
Just a
v -> Int -> a -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11 a
v
showTrieWith :: (Show k, Map map k)
=> (Maybe a -> ShowS) -> TrieMap map k a -> ShowS
showTrieWith :: forall k (map :: * -> * -> *) a.
(Show k, Map map k) =>
(Maybe a -> ShowS) -> TrieMap map k a -> ShowS
showTrieWith = (Maybe a -> ShowS) -> TrieMap map k a -> ShowS
forall k (trie :: (* -> * -> *) -> * -> * -> *) (st :: * -> *)
(map :: * -> * -> *) a.
(Show k, Trie trie st map k) =>
(st a -> ShowS) -> trie map k a -> ShowS
Base.showTrieWith