Safe Haskell | Trustworthy |
---|---|
Language | Haskell2010 |
Data.GenericTrie.Internal
Description
Unstable implementation details
Synopsis
- class TrieKey k where
- type TrieRep k :: * -> *
- trieEmpty :: Trie k a
- trieNull :: Trie k a -> Bool
- trieLookup :: k -> Trie k a -> Maybe a
- trieInsert :: k -> a -> Trie k a -> Trie k a
- trieDelete :: k -> Trie k a -> Trie k a
- trieSingleton :: k -> a -> Trie k a
- trieMap :: (a -> b) -> Trie k a -> Trie k b
- trieTraverse :: Applicative f => (a -> f b) -> Trie k a -> f (Trie k b)
- trieShowsPrec :: Show a => Int -> Trie k a -> ShowS
- trieMapMaybeWithKey :: (k -> a -> Maybe b) -> Trie k a -> Trie k b
- trieFoldWithKey :: (k -> a -> r -> r) -> r -> Trie k a -> r
- trieTraverseWithKey :: Applicative f => (k -> a -> f b) -> Trie k a -> f (Trie k b)
- trieMergeWithKey :: (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
- newtype Trie k a = MkTrie (TrieRep k a)
- newtype OrdKey k = OrdKey {
- getOrdKey :: k
- genericTrieNull :: TrieRep k ~ TrieRepDefault k => Trie k a -> Bool
- genericTrieMap :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k) => (a -> b) -> Trie k a -> Trie k b
- genericTrieTraverse :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Applicative f) => (a -> f b) -> Trie k a -> f (Trie k b)
- genericTrieShowsPrec :: (Show a, GTrieKeyShow (Rep k), TrieRep k ~ TrieRepDefault k) => Int -> Trie k a -> ShowS
- genericInsert :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a -> Trie k a
- genericLookup :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Maybe a
- genericDelete :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Trie k a
- genericMapMaybeWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => (k -> a -> Maybe b) -> Trie k a -> Trie k b
- genericSingleton :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a
- genericEmpty :: TrieRep k ~ TrieRepDefault k => Trie k a
- genericFoldWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => (k -> a -> r -> r) -> r -> Trie k a -> r
- genericTraverseWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k, Applicative f) => (k -> a -> f b) -> Trie k a -> f (Trie k b)
- data TrieRepDefault k a
- class GTrieKey f where
- gtrieLookup :: f p -> GTrie f a -> Maybe a
- gtrieInsert :: f p -> a -> GTrie f a -> GTrie f a
- gtrieSingleton :: f p -> a -> GTrie f a
- gtrieDelete :: f p -> GTrie f a -> Maybe (GTrie f a)
- gtrieMap :: (a -> b) -> GTrie f a -> GTrie f b
- gtrieTraverse :: Applicative m => (a -> m b) -> GTrie f a -> m (GTrie f b)
- gmapMaybeWithKey :: (f p -> a -> Maybe b) -> GTrie f a -> Maybe (GTrie f b)
- gfoldWithKey :: (f p -> a -> r -> r) -> r -> GTrie f a -> r
- gtraverseWithKey :: Applicative m => (f p -> a -> m b) -> GTrie f a -> m (GTrie f b)
- gmergeWithKey :: (f p -> a -> b -> Maybe c) -> (GTrie f a -> Maybe (GTrie f c)) -> (GTrie f b -> Maybe (GTrie f c)) -> GTrie f a -> GTrie f b -> Maybe (GTrie f c)
- data family GTrie (f :: * -> *) a
Documentation
class TrieKey k where Source #
Types that may be used as the key of a Trie
.
For data
declarations, the instance can be automatically derived from
a Generic
instance.
Minimal complete definition
Nothing
Methods
trieEmpty :: Trie k a Source #
Construct an empty trie
trieNull :: Trie k a -> Bool Source #
Test for an empty trie
trieLookup :: k -> Trie k a -> Maybe a Source #
Lookup element from trie
trieInsert :: k -> a -> Trie k a -> Trie k a Source #
Insert element into trie
trieDelete :: k -> Trie k a -> Trie k a Source #
Delete element from trie
trieSingleton :: k -> a -> Trie k a Source #
Construct a trie holding a single value
trieMap :: (a -> b) -> Trie k a -> Trie k b Source #
Apply a function to all values stored in a trie
trieTraverse :: Applicative f => (a -> f b) -> Trie k a -> f (Trie k b) Source #
Traverse the values stored in a trie
trieShowsPrec :: Show a => Int -> Trie k a -> ShowS Source #
Show the representation of a trie
trieMapMaybeWithKey :: (k -> a -> Maybe b) -> Trie k a -> Trie k b Source #
Apply a function to the values of a Trie
and keep the elements
of the trie that result in a Just
value.
trieFoldWithKey :: (k -> a -> r -> r) -> r -> Trie k a -> r Source #
Fold a trie with a function of both key and value.
trieTraverseWithKey :: Applicative f => (k -> a -> f b) -> Trie k a -> f (Trie k b) Source #
Traverse a trie with a function of both key and value.
trieMergeWithKey :: (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 Source #
trieEmpty :: TrieRep k ~ TrieRepDefault k => Trie k a Source #
Construct an empty trie
trieSingleton :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a Source #
Construct a trie holding a single value
trieNull :: TrieRep k ~ TrieRepDefault k => Trie k a -> Bool Source #
Test for an empty trie
trieLookup :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Maybe a Source #
Lookup element from trie
trieInsert :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a -> Trie k a Source #
Insert element into trie
trieDelete :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Trie k a Source #
Delete element from trie
trieMap :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k) => (a -> b) -> Trie k a -> Trie k b Source #
Apply a function to all values stored in a trie
trieTraverse :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Applicative f) => (a -> f b) -> Trie k a -> f (Trie k b) Source #
Traverse the values stored in a trie
trieShowsPrec :: (Show a, GTrieKeyShow (Rep k), TrieRep k ~ TrieRepDefault k) => Int -> Trie k a -> ShowS Source #
Show the representation of a trie
trieMapMaybeWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => (k -> a -> Maybe b) -> Trie k a -> Trie k b Source #
Apply a function to the values of a Trie
and keep the elements
of the trie that result in a Just
value.
trieFoldWithKey :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Generic k) => (k -> a -> r -> r) -> r -> Trie k a -> r Source #
Fold a trie with a function of both key and value.
trieTraverseWithKey :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Generic k, Applicative f) => (k -> a -> f b) -> Trie k a -> f (Trie k b) Source #
Traverse a trie with a function of both key and value.
trieMergeWithKey :: (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 Source #
Instances
TrieKey Bool Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie Bool a Source # trieNull :: Trie Bool a -> Bool Source # trieLookup :: Bool -> Trie Bool a -> Maybe a Source # trieInsert :: Bool -> a -> Trie Bool a -> Trie Bool a Source # trieDelete :: Bool -> Trie Bool a -> Trie Bool a Source # trieSingleton :: Bool -> a -> Trie Bool a Source # trieMap :: (a -> b) -> Trie Bool a -> Trie Bool b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie Bool a -> f (Trie Bool b) Source # trieShowsPrec :: Show a => Int -> Trie Bool a -> ShowS Source # trieMapMaybeWithKey :: (Bool -> a -> Maybe b) -> Trie Bool a -> Trie Bool b Source # trieFoldWithKey :: (Bool -> a -> r -> r) -> r -> Trie Bool a -> r Source # trieTraverseWithKey :: Applicative f => (Bool -> a -> f b) -> Trie Bool a -> f (Trie Bool b) Source # trieMergeWithKey :: (Bool -> a -> b -> Maybe c) -> (Trie Bool a -> Trie Bool c) -> (Trie Bool b -> Trie Bool c) -> Trie Bool a -> Trie Bool b -> Trie Bool c Source # | |
TrieKey Char Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie Char a Source # trieNull :: Trie Char a -> Bool Source # trieLookup :: Char -> Trie Char a -> Maybe a Source # trieInsert :: Char -> a -> Trie Char a -> Trie Char a Source # trieDelete :: Char -> Trie Char a -> Trie Char a Source # trieSingleton :: Char -> a -> Trie Char a Source # trieMap :: (a -> b) -> Trie Char a -> Trie Char b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie Char a -> f (Trie Char b) Source # trieShowsPrec :: Show a => Int -> Trie Char a -> ShowS Source # trieMapMaybeWithKey :: (Char -> a -> Maybe b) -> Trie Char a -> Trie Char b Source # trieFoldWithKey :: (Char -> a -> r -> r) -> r -> Trie Char a -> r Source # trieTraverseWithKey :: Applicative f => (Char -> a -> f b) -> Trie Char a -> f (Trie Char b) Source # trieMergeWithKey :: (Char -> a -> b -> Maybe c) -> (Trie Char a -> Trie Char c) -> (Trie Char b -> Trie Char c) -> Trie Char a -> Trie Char b -> Trie Char c Source # | |
TrieKey Int Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie Int a Source # trieNull :: Trie Int a -> Bool Source # trieLookup :: Int -> Trie Int a -> Maybe a Source # trieInsert :: Int -> a -> Trie Int a -> Trie Int a Source # trieDelete :: Int -> Trie Int a -> Trie Int a Source # trieSingleton :: Int -> a -> Trie Int a Source # trieMap :: (a -> b) -> Trie Int a -> Trie Int b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie Int a -> f (Trie Int b) Source # trieShowsPrec :: Show a => Int -> Trie Int a -> ShowS Source # trieMapMaybeWithKey :: (Int -> a -> Maybe b) -> Trie Int a -> Trie Int b Source # trieFoldWithKey :: (Int -> a -> r -> r) -> r -> Trie Int a -> r Source # trieTraverseWithKey :: Applicative f => (Int -> a -> f b) -> Trie Int a -> f (Trie Int b) Source # trieMergeWithKey :: (Int -> a -> b -> Maybe c) -> (Trie Int a -> Trie Int c) -> (Trie Int b -> Trie Int c) -> Trie Int a -> Trie Int b -> Trie Int c Source # | |
TrieKey Integer Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie Integer a Source # trieNull :: Trie Integer a -> Bool Source # trieLookup :: Integer -> Trie Integer a -> Maybe a Source # trieInsert :: Integer -> a -> Trie Integer a -> Trie Integer a Source # trieDelete :: Integer -> Trie Integer a -> Trie Integer a Source # trieSingleton :: Integer -> a -> Trie Integer a Source # trieMap :: (a -> b) -> Trie Integer a -> Trie Integer b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie Integer a -> f (Trie Integer b) Source # trieShowsPrec :: Show a => Int -> Trie Integer a -> ShowS Source # trieMapMaybeWithKey :: (Integer -> a -> Maybe b) -> Trie Integer a -> Trie Integer b Source # trieFoldWithKey :: (Integer -> a -> r -> r) -> r -> Trie Integer a -> r Source # trieTraverseWithKey :: Applicative f => (Integer -> a -> f b) -> Trie Integer a -> f (Trie Integer b) Source # trieMergeWithKey :: (Integer -> a -> b -> Maybe c) -> (Trie Integer a -> Trie Integer c) -> (Trie Integer b -> Trie Integer c) -> Trie Integer a -> Trie Integer b -> Trie Integer c Source # | |
TrieKey () Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie () a Source # trieNull :: Trie () a -> Bool Source # trieLookup :: () -> Trie () a -> Maybe a Source # trieInsert :: () -> a -> Trie () a -> Trie () a Source # trieDelete :: () -> Trie () a -> Trie () a Source # trieSingleton :: () -> a -> Trie () a Source # trieMap :: (a -> b) -> Trie () a -> Trie () b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie () a -> f (Trie () b) Source # trieShowsPrec :: Show a => Int -> Trie () a -> ShowS Source # trieMapMaybeWithKey :: (() -> a -> Maybe b) -> Trie () a -> Trie () b Source # trieFoldWithKey :: (() -> a -> r -> r) -> r -> Trie () a -> r Source # trieTraverseWithKey :: Applicative f => (() -> a -> f b) -> Trie () a -> f (Trie () b) Source # trieMergeWithKey :: (() -> a -> b -> Maybe c) -> (Trie () a -> Trie () c) -> (Trie () b -> Trie () c) -> Trie () a -> Trie () b -> Trie () c Source # | |
TrieKey k => TrieKey [k] Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie [k] a Source # trieNull :: Trie [k] a -> Bool Source # trieLookup :: [k] -> Trie [k] a -> Maybe a Source # trieInsert :: [k] -> a -> Trie [k] a -> Trie [k] a Source # trieDelete :: [k] -> Trie [k] a -> Trie [k] a Source # trieSingleton :: [k] -> a -> Trie [k] a Source # trieMap :: (a -> b) -> Trie [k] a -> Trie [k] b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie [k] a -> f (Trie [k] b) Source # trieShowsPrec :: Show a => Int -> Trie [k] a -> ShowS Source # trieMapMaybeWithKey :: ([k] -> a -> Maybe b) -> Trie [k] a -> Trie [k] b Source # trieFoldWithKey :: ([k] -> a -> r -> r) -> r -> Trie [k] a -> r Source # trieTraverseWithKey :: Applicative f => ([k] -> a -> f b) -> Trie [k] a -> f (Trie [k] b) Source # trieMergeWithKey :: ([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 Source # | |
TrieKey k => TrieKey (Maybe k) Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (Maybe k) a Source # trieNull :: Trie (Maybe k) a -> Bool Source # trieLookup :: Maybe k -> Trie (Maybe k) a -> Maybe a Source # trieInsert :: Maybe k -> a -> Trie (Maybe k) a -> Trie (Maybe k) a Source # trieDelete :: Maybe k -> Trie (Maybe k) a -> Trie (Maybe k) a Source # trieSingleton :: Maybe k -> a -> Trie (Maybe k) a Source # trieMap :: (a -> b) -> Trie (Maybe k) a -> Trie (Maybe k) b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie (Maybe k) a -> f (Trie (Maybe k) b) Source # trieShowsPrec :: Show a => Int -> Trie (Maybe k) a -> ShowS Source # trieMapMaybeWithKey :: (Maybe k -> a -> Maybe b) -> Trie (Maybe k) a -> Trie (Maybe k) b Source # trieFoldWithKey :: (Maybe k -> a -> r -> r) -> r -> Trie (Maybe k) a -> r Source # trieTraverseWithKey :: Applicative f => (Maybe k -> a -> f b) -> Trie (Maybe k) a -> f (Trie (Maybe k) b) Source # trieMergeWithKey :: (Maybe k -> a -> b -> Maybe c) -> (Trie (Maybe k) a -> Trie (Maybe k) c) -> (Trie (Maybe k) b -> Trie (Maybe k) c) -> Trie (Maybe k) a -> Trie (Maybe k) b -> Trie (Maybe k) c Source # | |
(Show k, Ord k) => TrieKey (OrdKey k) Source # |
|
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (OrdKey k) a Source # trieNull :: Trie (OrdKey k) a -> Bool Source # trieLookup :: OrdKey k -> Trie (OrdKey k) a -> Maybe a Source # trieInsert :: OrdKey k -> a -> Trie (OrdKey k) a -> Trie (OrdKey k) a Source # trieDelete :: OrdKey k -> Trie (OrdKey k) a -> Trie (OrdKey k) a Source # trieSingleton :: OrdKey k -> a -> Trie (OrdKey k) a Source # trieMap :: (a -> b) -> Trie (OrdKey k) a -> Trie (OrdKey k) b Source # trieTraverse :: Applicative f => (a -> f b) -> Trie (OrdKey k) a -> f (Trie (OrdKey k) b) Source # trieShowsPrec :: Show a => Int -> Trie (OrdKey k) a -> ShowS Source # trieMapMaybeWithKey :: (OrdKey k -> a -> Maybe b) -> Trie (OrdKey k) a -> Trie (OrdKey k) b Source # trieFoldWithKey :: (OrdKey k -> a -> r -> r) -> r -> Trie (OrdKey k) a -> r Source # trieTraverseWithKey :: Applicative f => (OrdKey k -> a -> f b) -> Trie (OrdKey k) a -> f (Trie (OrdKey k) b) Source # trieMergeWithKey :: (OrdKey k -> a -> b -> Maybe c) -> (Trie (OrdKey k) a -> Trie (OrdKey k) c) -> (Trie (OrdKey k) b -> Trie (OrdKey k) c) -> Trie (OrdKey k) a -> Trie (OrdKey k) b -> Trie (OrdKey k) c Source # | |
(TrieKey a, TrieKey b) => TrieKey (Either a b) Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (Either a b) a0 Source # trieNull :: Trie (Either a b) a0 -> Bool Source # trieLookup :: Either a b -> Trie (Either a b) a0 -> Maybe a0 Source # trieInsert :: Either a b -> a0 -> Trie (Either a b) a0 -> Trie (Either a b) a0 Source # trieDelete :: Either a b -> Trie (Either a b) a0 -> Trie (Either a b) a0 Source # trieSingleton :: Either a b -> a0 -> Trie (Either a b) a0 Source # trieMap :: (a0 -> b0) -> Trie (Either a b) a0 -> Trie (Either a b) b0 Source # trieTraverse :: Applicative f => (a0 -> f b0) -> Trie (Either a b) a0 -> f (Trie (Either a b) b0) Source # trieShowsPrec :: Show a0 => Int -> Trie (Either a b) a0 -> ShowS Source # trieMapMaybeWithKey :: (Either a b -> a0 -> Maybe b0) -> Trie (Either a b) a0 -> Trie (Either a b) b0 Source # trieFoldWithKey :: (Either a b -> a0 -> r -> r) -> r -> Trie (Either a b) a0 -> r Source # trieTraverseWithKey :: Applicative f => (Either a b -> a0 -> f b0) -> Trie (Either a b) a0 -> f (Trie (Either a b) b0) Source # trieMergeWithKey :: (Either a b -> a0 -> b0 -> Maybe c) -> (Trie (Either a b) a0 -> Trie (Either a b) c) -> (Trie (Either a b) b0 -> Trie (Either a b) c) -> Trie (Either a b) a0 -> Trie (Either a b) b0 -> Trie (Either a b) c Source # | |
(TrieKey a, TrieKey b) => TrieKey (a, b) Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (a, b) a0 Source # trieNull :: Trie (a, b) a0 -> Bool Source # trieLookup :: (a, b) -> Trie (a, b) a0 -> Maybe a0 Source # trieInsert :: (a, b) -> a0 -> Trie (a, b) a0 -> Trie (a, b) a0 Source # trieDelete :: (a, b) -> Trie (a, b) a0 -> Trie (a, b) a0 Source # trieSingleton :: (a, b) -> a0 -> Trie (a, b) a0 Source # trieMap :: (a0 -> b0) -> Trie (a, b) a0 -> Trie (a, b) b0 Source # trieTraverse :: Applicative f => (a0 -> f b0) -> Trie (a, b) a0 -> f (Trie (a, b) b0) Source # trieShowsPrec :: Show a0 => Int -> Trie (a, b) a0 -> ShowS Source # trieMapMaybeWithKey :: ((a, b) -> a0 -> Maybe b0) -> Trie (a, b) a0 -> Trie (a, b) b0 Source # trieFoldWithKey :: ((a, b) -> a0 -> r -> r) -> r -> Trie (a, b) a0 -> r Source # trieTraverseWithKey :: Applicative f => ((a, b) -> a0 -> f b0) -> Trie (a, b) a0 -> f (Trie (a, b) b0) Source # trieMergeWithKey :: ((a, b) -> a0 -> b0 -> Maybe c) -> (Trie (a, b) a0 -> Trie (a, b) c) -> (Trie (a, b) b0 -> Trie (a, b) c) -> Trie (a, b) a0 -> Trie (a, b) b0 -> Trie (a, b) c Source # | |
(TrieKey a, TrieKey b, TrieKey c) => TrieKey (a, b, c) Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (a, b, c) a0 Source # trieNull :: Trie (a, b, c) a0 -> Bool Source # trieLookup :: (a, b, c) -> Trie (a, b, c) a0 -> Maybe a0 Source # trieInsert :: (a, b, c) -> a0 -> Trie (a, b, c) a0 -> Trie (a, b, c) a0 Source # trieDelete :: (a, b, c) -> Trie (a, b, c) a0 -> Trie (a, b, c) a0 Source # trieSingleton :: (a, b, c) -> a0 -> Trie (a, b, c) a0 Source # trieMap :: (a0 -> b0) -> Trie (a, b, c) a0 -> Trie (a, b, c) b0 Source # trieTraverse :: Applicative f => (a0 -> f b0) -> Trie (a, b, c) a0 -> f (Trie (a, b, c) b0) Source # trieShowsPrec :: Show a0 => Int -> Trie (a, b, c) a0 -> ShowS Source # trieMapMaybeWithKey :: ((a, b, c) -> a0 -> Maybe b0) -> Trie (a, b, c) a0 -> Trie (a, b, c) b0 Source # trieFoldWithKey :: ((a, b, c) -> a0 -> r -> r) -> r -> Trie (a, b, c) a0 -> r Source # trieTraverseWithKey :: Applicative f => ((a, b, c) -> a0 -> f b0) -> Trie (a, b, c) a0 -> f (Trie (a, b, c) b0) Source # trieMergeWithKey :: ((a, b, c) -> a0 -> b0 -> Maybe c0) -> (Trie (a, b, c) a0 -> Trie (a, b, c) c0) -> (Trie (a, b, c) b0 -> Trie (a, b, c) c0) -> Trie (a, b, c) a0 -> Trie (a, b, c) b0 -> Trie (a, b, c) c0 Source # | |
(TrieKey a, TrieKey b, TrieKey c, TrieKey d) => TrieKey (a, b, c, d) Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (a, b, c, d) a0 Source # trieNull :: Trie (a, b, c, d) a0 -> Bool Source # trieLookup :: (a, b, c, d) -> Trie (a, b, c, d) a0 -> Maybe a0 Source # trieInsert :: (a, b, c, d) -> a0 -> Trie (a, b, c, d) a0 -> Trie (a, b, c, d) a0 Source # trieDelete :: (a, b, c, d) -> Trie (a, b, c, d) a0 -> Trie (a, b, c, d) a0 Source # trieSingleton :: (a, b, c, d) -> a0 -> Trie (a, b, c, d) a0 Source # trieMap :: (a0 -> b0) -> Trie (a, b, c, d) a0 -> Trie (a, b, c, d) b0 Source # trieTraverse :: Applicative f => (a0 -> f b0) -> Trie (a, b, c, d) a0 -> f (Trie (a, b, c, d) b0) Source # trieShowsPrec :: Show a0 => Int -> Trie (a, b, c, d) a0 -> ShowS Source # trieMapMaybeWithKey :: ((a, b, c, d) -> a0 -> Maybe b0) -> Trie (a, b, c, d) a0 -> Trie (a, b, c, d) b0 Source # trieFoldWithKey :: ((a, b, c, d) -> a0 -> r -> r) -> r -> Trie (a, b, c, d) a0 -> r Source # trieTraverseWithKey :: Applicative f => ((a, b, c, d) -> a0 -> f b0) -> Trie (a, b, c, d) a0 -> f (Trie (a, b, c, d) b0) Source # trieMergeWithKey :: ((a, b, c, d) -> a0 -> b0 -> Maybe c0) -> (Trie (a, b, c, d) a0 -> Trie (a, b, c, d) c0) -> (Trie (a, b, c, d) b0 -> Trie (a, b, c, d) c0) -> Trie (a, b, c, d) a0 -> Trie (a, b, c, d) b0 -> Trie (a, b, c, d) c0 Source # | |
(TrieKey a, TrieKey b, TrieKey c, TrieKey d, TrieKey e) => TrieKey (a, b, c, d, e) Source # | |
Defined in Data.GenericTrie.Internal Methods trieEmpty :: Trie (a, b, c, d, e) a0 Source # trieNull :: Trie (a, b, c, d, e) a0 -> Bool Source # trieLookup :: (a, b, c, d, e) -> Trie (a, b, c, d, e) a0 -> Maybe a0 Source # trieInsert :: (a, b, c, d, e) -> a0 -> Trie (a, b, c, d, e) a0 -> Trie (a, b, c, d, e) a0 Source # trieDelete :: (a, b, c, d, e) -> Trie (a, b, c, d, e) a0 -> Trie (a, b, c, d, e) a0 Source # trieSingleton :: (a, b, c, d, e) -> a0 -> Trie (a, b, c, d, e) a0 Source # trieMap :: (a0 -> b0) -> Trie (a, b, c, d, e) a0 -> Trie (a, b, c, d, e) b0 Source # trieTraverse :: Applicative f => (a0 -> f b0) -> Trie (a, b, c, d, e) a0 -> f (Trie (a, b, c, d, e) b0) Source # trieShowsPrec :: Show a0 => Int -> Trie (a, b, c, d, e) a0 -> ShowS Source # trieMapMaybeWithKey :: ((a, b, c, d, e) -> a0 -> Maybe b0) -> Trie (a, b, c, d, e) a0 -> Trie (a, b, c, d, e) b0 Source # trieFoldWithKey :: ((a, b, c, d, e) -> a0 -> r -> r) -> r -> Trie (a, b, c, d, e) a0 -> r Source # trieTraverseWithKey :: Applicative f => ((a, b, c, d, e) -> a0 -> f b0) -> Trie (a, b, c, d, e) a0 -> f (Trie (a, b, c, d, e) b0) Source # trieMergeWithKey :: ((a, b, c, d, e) -> a0 -> b0 -> Maybe c0) -> (Trie (a, b, c, d, e) a0 -> Trie (a, b, c, d, e) c0) -> (Trie (a, b, c, d, e) b0 -> Trie (a, b, c, d, e) c0) -> Trie (a, b, c, d, e) a0 -> Trie (a, b, c, d, e) b0 -> Trie (a, b, c, d, e) c0 Source # |
A map from keys of type k
, to values of type a
.
Instances
TrieKey k => Functor (Trie k) Source # | |
TrieKey k => Foldable (Trie k) Source # | |
Defined in Data.GenericTrie.Internal Methods fold :: Monoid m => Trie k m -> m Source # foldMap :: Monoid m => (a -> m) -> Trie k a -> m Source # foldr :: (a -> b -> b) -> b -> Trie k a -> b Source # foldr' :: (a -> b -> b) -> b -> Trie k a -> b Source # foldl :: (b -> a -> b) -> b -> Trie k a -> b Source # foldl' :: (b -> a -> b) -> b -> Trie k a -> b Source # foldr1 :: (a -> a -> a) -> Trie k a -> a Source # foldl1 :: (a -> a -> a) -> Trie k a -> a Source # toList :: Trie k a -> [a] Source # null :: Trie k a -> Bool Source # length :: Trie k a -> Int Source # elem :: Eq a => a -> Trie k a -> Bool Source # maximum :: Ord a => Trie k a -> a Source # minimum :: Ord a => Trie k a -> a Source # | |
TrieKey k => Traversable (Trie k) Source # | |
Defined in Data.GenericTrie.Internal | |
(Show a, TrieKey k) => Show (Trie k a) Source # | |
Tries indexed by OrdKey
will be represented as an ordinary Map
and the keys will be compared based on the Ord
instance for k
.
Instances
Generic derivation implementation
genericTrieNull :: TrieRep k ~ TrieRepDefault k => Trie k a -> Bool Source #
Generic implementation of trieNull
. This is the default implementation.
genericTrieMap :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k) => (a -> b) -> Trie k a -> Trie k b Source #
Generic implementation of trieMap
. This is the default implementation.
genericTrieTraverse :: (GTrieKey (Rep k), TrieRep k ~ TrieRepDefault k, Applicative f) => (a -> f b) -> Trie k a -> f (Trie k b) Source #
Generic implementation of trieTraverse
. This is the default implementation.
genericTrieShowsPrec :: (Show a, GTrieKeyShow (Rep k), TrieRep k ~ TrieRepDefault k) => Int -> Trie k a -> ShowS Source #
Generic implementation of trieShowsPrec
. This is the default implementation.
genericInsert :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a -> Trie k a Source #
Generic implementation of insert
. This is the default implementation.
genericLookup :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Maybe a Source #
Generic implementation of lookup
. This is the default implementation.
genericDelete :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> Trie k a -> Trie k a Source #
Generic implementation of delete
. This is the default implementation.
genericMapMaybeWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => (k -> a -> Maybe b) -> Trie k a -> Trie k b Source #
Generic implementation of mapMaybe
. This is the default implementation.
genericSingleton :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => k -> a -> Trie k a Source #
Generic implementation of singleton
. This is the default implementation.
genericEmpty :: TrieRep k ~ TrieRepDefault k => Trie k a Source #
Generic implementation of empty
. This is the default implementation.
genericFoldWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k) => (k -> a -> r -> r) -> r -> Trie k a -> r Source #
Generic implementation of foldWithKey
. This is the default implementation.
genericTraverseWithKey :: (GTrieKey (Rep k), Generic k, TrieRep k ~ TrieRepDefault k, Applicative f) => (k -> a -> f b) -> Trie k a -> f (Trie k b) Source #
Generic implementation of traverseWithKey
. This is the default implementation.
data TrieRepDefault k a Source #
class GTrieKey f where Source #
TrieKey operations on Generic representations used to provide the default implementations of tries.
Methods
gtrieLookup :: f p -> GTrie f a -> Maybe a Source #
gtrieInsert :: f p -> a -> GTrie f a -> GTrie f a Source #
gtrieSingleton :: f p -> a -> GTrie f a Source #
gtrieDelete :: f p -> GTrie f a -> Maybe (GTrie f a) Source #
gtrieMap :: (a -> b) -> GTrie f a -> GTrie f b Source #
gtrieTraverse :: Applicative m => (a -> m b) -> GTrie f a -> m (GTrie f b) Source #
gmapMaybeWithKey :: (f p -> a -> Maybe b) -> GTrie f a -> Maybe (GTrie f b) Source #
gfoldWithKey :: (f p -> a -> r -> r) -> r -> GTrie f a -> r Source #
gtraverseWithKey :: Applicative m => (f p -> a -> m b) -> GTrie f a -> m (GTrie f b) Source #
gmergeWithKey :: (f p -> a -> b -> Maybe c) -> (GTrie f a -> Maybe (GTrie f c)) -> (GTrie f b -> Maybe (GTrie f c)) -> GTrie f a -> GTrie f b -> Maybe (GTrie f c) Source #
Instances
GTrieKey (V1 :: Type -> Type) Source # | Tries of types without constructors are represented by a unit. |
Defined in Data.GenericTrie.Internal Methods gtrieLookup :: V1 p -> GTrie V1 a -> Maybe a Source # gtrieInsert :: V1 p -> a -> GTrie V1 a -> GTrie V1 a Source # gtrieSingleton :: V1 p -> a -> GTrie V1 a Source # gtrieDelete :: V1 p -> GTrie V1 a -> Maybe (GTrie V1 a) Source # gtrieMap :: (a -> b) -> GTrie V1 a -> GTrie V1 b Source # gtrieTraverse :: Applicative m => (a -> m b) -> GTrie V1 a -> m (GTrie V1 b) Source # gmapMaybeWithKey :: (V1 p -> a -> Maybe b) -> GTrie V1 a -> Maybe (GTrie V1 b) Source # gfoldWithKey :: (V1 p -> a -> r -> r) -> r -> GTrie V1 a -> r Source # gtraverseWithKey :: Applicative m => (V1 p -> a -> m b) -> GTrie V1 a -> m (GTrie V1 b) Source # gmergeWithKey :: (V1 p -> a -> b -> Maybe c) -> (GTrie V1 a -> Maybe (GTrie V1 c)) -> (GTrie V1 b -> Maybe (GTrie V1 c)) -> GTrie V1 a -> GTrie V1 b -> Maybe (GTrie V1 c) Source # | |
GTrieKey (U1 :: Type -> Type) Source # | Tries of constructors without fields are represented by a single value. |
Defined in Data.GenericTrie.Internal Methods gtrieLookup :: U1 p -> GTrie U1 a -> Maybe a Source # gtrieInsert :: U1 p -> a -> GTrie U1 a -> GTrie U1 a Source # gtrieSingleton :: U1 p -> a -> GTrie U1 a Source # gtrieDelete :: U1 p -> GTrie U1 a -> Maybe (GTrie U1 a) Source # gtrieMap :: (a -> b) -> GTrie U1 a -> GTrie U1 b Source # gtrieTraverse :: Applicative m => (a -> m b) -> GTrie U1 a -> m (GTrie U1 b) Source # gmapMaybeWithKey :: (U1 p -> a -> Maybe b) -> GTrie U1 a -> Maybe (GTrie U1 b) Source # gfoldWithKey :: (U1 p -> a -> r -> r) -> r -> GTrie U1 a -> r Source # gtraverseWithKey :: Applicative m => (U1 p -> a -> m b) -> GTrie U1 a -> m (GTrie U1 b) Source # gmergeWithKey :: (U1 p -> a -> b -> Maybe c) -> (GTrie U1 a -> Maybe (GTrie U1 c)) -> (GTrie U1 b -> Maybe (GTrie U1 c)) -> GTrie U1 a -> GTrie U1 b -> Maybe (GTrie U1 c) Source # | |
TrieKey k => GTrieKey (K1 i k :: Type -> Type) Source # | Generic fields are represented by tries of the field type. |
Defined in Data.GenericTrie.Internal Methods gtrieLookup :: K1 i k p -> GTrie (K1 i k) a -> Maybe a Source # gtrieInsert :: K1 i k p -> a -> GTrie (K1 i k) a -> GTrie (K1 i k) a Source # gtrieSingleton :: K1 i k p -> a -> GTrie (K1 i k) a Source # gtrieDelete :: K1 i k p -> GTrie (K1 i k) a -> Maybe (GTrie (K1 i k) a) Source # gtrieMap :: (a -> b) -> GTrie (K1 i k) a -> GTrie (K1 i k) b Source # gtrieTraverse :: Applicative m => (a -> m b) -> GTrie (K1 i k) a -> m (GTrie (K1 i k) b) Source # gmapMaybeWithKey :: (K1 i k p -> a -> Maybe b) -> GTrie (K1 i k) a -> Maybe (GTrie (K1 i k) b) Source # gfoldWithKey :: (K1 i k p -> a -> r -> r) -> r -> GTrie (K1 i k) a -> r Source # gtraverseWithKey :: Applicative m => (K1 i k p -> a -> m b) -> GTrie (K1 i k) a -> m (GTrie (K1 i k) b) Source # gmergeWithKey :: (K1 i k p -> a -> b -> Maybe c) -> (GTrie (K1 i k) a -> Maybe (GTrie (K1 i k) c)) -> (GTrie (K1 i k) b -> Maybe (GTrie (K1 i k) c)) -> GTrie (K1 i k) a -> GTrie (K1 i k) b -> Maybe (GTrie (K1 i k) c) Source # | |
(GTrieKey f, GTrieKey g) => GTrieKey (f :+: g) Source # | Generic sums are represented by up to a pair of sub-tries. |
Defined in Data.GenericTrie.Internal Methods gtrieLookup :: (f :+: g) p -> GTrie (f :+: g) a -> Maybe a Source # gtrieInsert :: (f :+: g) p -> a -> GTrie (f :+: g) a -> GTrie (f :+: g) a Source # gtrieSingleton :: (f :+: g) p -> a -> GTrie (f :+: g) a Source # gtrieDelete :: (f :+: g) p -> GTrie (f :+: g) a -> Maybe (GTrie (f :+: g) a) Source # gtrieMap :: (a -> b) -> GTrie (f :+: g) a -> GTrie (f :+: g) b Source # gtrieTraverse :: Applicative m => (a -> m b) -> GTrie (f :+: g) a -> m (GTrie (f :+: g) b) Source # gmapMaybeWithKey :: ((f :+: g) p -> a -> Maybe b) -> GTrie (f :+: g) a -> Maybe (GTrie (f :+: g) b) Source # gfoldWithKey :: ((f :+: g) p -> a -> r -> r) -> r -> GTrie (f :+: g) a -> r Source # gtraverseWithKey :: Applicative m => ((f :+: g) p -> a -> m b) -> GTrie (f :+: g) a -> m (GTrie (f :+: g) b) Source # gmergeWithKey :: ((f :+: g) p -> a -> b -> Maybe c) -> (GTrie (f :+: g) a -> Maybe (GTrie (f :+: g) c)) -> (GTrie (f :+: g) b -> Maybe (GTrie (f :+: g) c)) -> GTrie (f :+: g) a -> GTrie (f :+: g) b -> Maybe (GTrie (f :+: g) c) Source # | |
(GTrieKey f, GTrieKey g) => GTrieKey (f :*: g) Source # | Generic products are represented by tries of tries. |
Defined in Data.GenericTrie.Internal Methods gtrieLookup :: (f :*: g) p -> GTrie (f :*: g) a -> Maybe a Source # gtrieInsert :: (f :*: g) p -> a -> GTrie (f :*: g) a -> GTrie (f :*: g) a Source # gtrieSingleton :: (f :*: g) p -> a -> GTrie (f :*: g) a Source # gtrieDelete :: (f :*: g) p -> GTrie (f :*: g) a -> Maybe (GTrie (f :*: g) a) Source # gtrieMap :: (a -> b) -> GTrie (f :*: g) a -> GTrie (f :*: g) b Source # gtrieTraverse :: Applicative m => (a -> m b) -> GTrie (f :*: g) a -> m (GTrie (f :*: g) b) Source # gmapMaybeWithKey :: ((f :*: g) p -> a -> Maybe b) -> GTrie (f :*: g) a -> Maybe (GTrie (f :*: g) b) Source # gfoldWithKey :: ((f :*: g) p -> a -> r -> r) -> r -> GTrie (f :*: g) a -> r Source # gtraverseWithKey :: Applicative m => ((f :*: g) p -> a -> m b) -> GTrie (f :*: g) a -> m (GTrie (f :*: g) b) Source # gmergeWithKey :: ((f :*: g) p -> a -> b -> Maybe c) -> (GTrie (f :*: g) a -> Maybe (GTrie (f :*: g) c)) -> (GTrie (f :*: g) b -> Maybe (GTrie (f :*: g) c)) -> GTrie (f :*: g) a -> GTrie (f :*: g) b -> Maybe (GTrie (f :*: g) c) Source # | |
GTrieKey f => GTrieKey (M1 i c f) Source # | Generic metadata is skipped in trie representation and operations. |
Defined in Data.GenericTrie.Internal Methods gtrieLookup :: M1 i c f p -> GTrie (M1 i c f) a -> Maybe a Source # gtrieInsert :: M1 i c f p -> a -> GTrie (M1 i c f) a -> GTrie (M1 i c f) a Source # gtrieSingleton :: M1 i c f p -> a -> GTrie (M1 i c f) a Source # gtrieDelete :: M1 i c f p -> GTrie (M1 i c f) a -> Maybe (GTrie (M1 i c f) a) Source # gtrieMap :: (a -> b) -> GTrie (M1 i c f) a -> GTrie (M1 i c f) b Source # gtrieTraverse :: Applicative m => (a -> m b) -> GTrie (M1 i c f) a -> m (GTrie (M1 i c f) b) Source # gmapMaybeWithKey :: (M1 i c f p -> a -> Maybe b) -> GTrie (M1 i c f) a -> Maybe (GTrie (M1 i c f) b) Source # gfoldWithKey :: (M1 i c f p -> a -> r -> r) -> r -> GTrie (M1 i c f) a -> r Source # gtraverseWithKey :: Applicative m => (M1 i c f p -> a -> m b) -> GTrie (M1 i c f) a -> m (GTrie (M1 i c f) b) Source # gmergeWithKey :: (M1 i c f p -> a -> b -> Maybe c0) -> (GTrie (M1 i c f) a -> Maybe (GTrie (M1 i c f) c0)) -> (GTrie (M1 i c f) b -> Maybe (GTrie (M1 i c f) c0)) -> GTrie (M1 i c f) a -> GTrie (M1 i c f) b -> Maybe (GTrie (M1 i c f) c0) Source # |
data family GTrie (f :: * -> *) a Source #
Mapping of generic representation of keys to trie structures.
Instances
GTrieKey f => Functor (GTrie f) Source # | |
(Show a, GTrieKeyShow f) => Show (GTrie f a) Source # | |
data GTrie (V1 :: Type -> Type) a Source # | |
Defined in Data.GenericTrie.Internal | |
newtype GTrie (U1 :: Type -> Type) a Source # | |
newtype GTrie (K1 i k :: Type -> Type) a Source # | |
data GTrie (f :+: g) a Source # | |
newtype GTrie (f :*: g) a Source # | |
newtype GTrie (M1 i c f) a Source # | |
Defined in Data.GenericTrie.Internal |