-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Automatic type inference of generalized tries.
--
-- Builds on the multirec library to create a system capable of automatic
-- or simple generalized trie type inference.
@package TrieMap
@version 1.0.0
module Data.TrieMap.Modifiers
newtype Ordered a
Ord :: a -> Ordered a
unOrd :: Ordered a -> a
newtype Rev k
Rev :: k -> Rev k
getRev :: Rev k -> k
newtype Key k
Key :: k -> Key k
getKey :: Key k -> k
instance Eq k => Eq (Rev k)
instance Eq a => Eq (Ordered a)
instance Ord a => Ord (Ordered a)
instance Repr k => Repr (Key k)
instance (Repr k, Ord (Rep k)) => Ord (Key k)
instance (Repr k, Eq (Rep k)) => Eq (Key k)
instance Functor Rev
instance Functor Ordered
instance Ord k => Ord (Rev k)
module Data.TrieMap.Representation.TH
-- | Given the name of a type constructor, automatically generates an
-- efficient Repr instance. Warning: Generalized tries do
-- not work for infinitely complicated types, for example, a
-- type-system construction of the natural numbers. In these cases, a
-- context reduction stack overflow will occur at compile time when you
-- use the TKey instance for that type.
genRepr :: Name -> Q [Dec]
-- | Given a type with an associated Ord instance, generates a
-- representation that will cause its TMap implementation to be
-- essentially equivalent to Data.Map.
genOrdRepr :: Name -> Q [Dec]
module Data.TrieMap.Class
newtype TMap k a
TMap :: TrieMap (Rep k) (Elem a) -> TMap k a
getTMap :: TMap k a -> TrieMap (Rep k) (Elem a)
newtype TSet a
TSet :: (TMap a ()) -> TSet a
class (Repr k, TrieKey (Rep k)) => TKey k
class Ord k => TrieKey k where { data family TrieMap k :: * -> *; { sizeM s m = foldWithKeyM (\ _ a n -> s a + n) m 0 fromListM s f = foldr (uncurry (insertWithKeyM s f)) emptyM fromAscListM = fromListM fromDistAscListM s = fromAscListM s (const const) } }
instance TKey k => Traversable (TMap k)
instance TKey k => Foldable (TMap k)
instance TKey k => Functor (TMap k)
instance (Repr k, TrieKey (Rep k)) => TKey k
module Data.TrieMap.Representation
class Repr a where { type family Rep a; }
toRep :: Repr a => a -> Rep a
fromRep :: Repr a => Rep a -> a
instance Repr CDouble
instance Repr CFloat
instance Repr CTime
instance Repr CClock
instance Repr CULLong
instance Repr CLLong
instance Repr CULong
instance Repr CLong
instance Repr CUInt
instance Repr CUShort
instance Repr CShort
instance Repr CUChar
instance Repr CSChar
instance Repr CChar
instance Repr CInt
instance RealFloat a[ax80] => Repr (Complex a[ax80])
instance Repr (Maybe a[a5n0])
instance Integral a[ax6I] => Repr (Ratio a[ax6I])
instance Repr (Tree a[ax5T])
instance Repr Bool
instance Repr Double
instance Repr Float
instance (TKey k, Repr a) => Repr (TMap k a)
module Data.TrieMap
class (Repr k, TrieKey (Rep k)) => TKey k
data TMap k a
-- | Find the value at a key. Calls error when the element can not
-- be found.
(!) :: TKey k => TMap k a -> k -> a
(\\) :: TKey k => TMap k a -> TMap k b -> TMap k a
-- | Is the map empty?
null :: TKey k => TMap k a -> Bool
size :: TKey k => TMap k a -> Int
member :: TKey k => k -> TMap k a -> Bool
notMember :: TKey k => k -> TMap k a -> Bool
-- | Lookup the value at a key in the map.
--
-- The function will return the corresponding value as (Just
-- value), or Nothing if the key isn't in the map.
lookup :: TKey k => k -> TMap k a -> Maybe a
-- | The expression (findWithDefault def k map) returns the
-- value at key k or returns default value def when the
-- key is not in the map.
findWithDefault :: TKey k => a -> k -> TMap k a -> a
-- | The empty map.
empty :: TKey k => TMap k a
-- | A map with a single element.
singleton :: TKey k => k -> a -> TMap k a
insert :: TKey k => k -> a -> TMap k a -> TMap k a
insertWith :: TKey k => (a -> a -> a) -> k -> a -> TMap k a -> TMap k a
insertWithKey :: TKey k => (k -> a -> a -> a) -> k -> a -> TMap k a -> TMap k a
delete :: TKey k => k -> TMap k a -> TMap k a
adjust :: TKey k => (a -> a) -> k -> TMap k a -> TMap k a
adjustWithKey :: TKey k => (k -> a -> a) -> k -> TMap k a -> TMap k a
update :: TKey k => (a -> Maybe a) -> k -> TMap k a -> TMap k a
updateWithKey :: TKey k => (k -> a -> Maybe a) -> k -> TMap k a -> TMap k a
-- | The expression (alter f k map) alters the value
-- x at k, or absence thereof. alter can be used
-- to insert, delete, or update a value in a TMap. In short:
-- lookup k (alter f k m) = f (lookup k m).
alter :: TKey k => (Maybe a -> Maybe a) -> k -> TMap k a -> TMap k a
union :: TKey k => TMap k a -> TMap k a -> TMap k a
unionWith :: TKey k => (a -> a -> a) -> TMap k a -> TMap k a -> TMap k a
unionWithKey :: TKey k => (k -> a -> a -> a) -> TMap k a -> TMap k a -> TMap k a
unionMaybeWith :: TKey k => (a -> a -> Maybe a) -> TMap k a -> TMap k a -> TMap k a
unionMaybeWithKey :: TKey k => (k -> a -> a -> Maybe a) -> TMap k a -> TMap k a -> TMap k a
symmetricDifference :: TKey k => TMap k a -> TMap k a -> TMap k a
difference :: TKey k => TMap k a -> TMap k b -> TMap k a
differenceWith :: TKey k => (a -> b -> Maybe a) -> TMap k a -> TMap k b -> TMap k a
differenceWithKey :: TKey k => (k -> a -> b -> Maybe a) -> TMap k a -> TMap k b -> TMap k a
intersection :: TKey k => TMap k a -> TMap k b -> TMap k a
intersectionWith :: TKey k => (a -> b -> c) -> TMap k a -> TMap k b -> TMap k c
intersectionWithKey :: TKey k => (k -> a -> b -> c) -> TMap k a -> TMap k b -> TMap k c
intersectionMaybeWith :: TKey k => (a -> b -> Maybe c) -> TMap k a -> TMap k b -> TMap k c
intersectionMaybeWithKey :: TKey k => (k -> a -> b -> Maybe c) -> TMap k a -> TMap k b -> TMap k c
map :: TKey k => (a -> b) -> TMap k a -> TMap k b
mapWithKey :: TKey k => (k -> a -> b) -> TMap k a -> TMap k b
mapKeys :: (TKey k, TKey k') => (k -> k') -> TMap k a -> TMap k' a
mapKeysWith :: (TKey k, TKey k') => (a -> a -> a) -> (k -> k') -> TMap k a -> TMap k' a
mapKeysMonotonic :: (TKey k, TKey k') => (k -> k') -> TMap k a -> TMap k' a
traverseWithKey :: (TKey k, Applicative f) => (k -> a -> f b) -> TMap k a -> f (TMap k b)
fold :: TKey k => (a -> b -> b) -> b -> TMap k a -> b
foldWithKey :: TKey k => (k -> a -> b -> b) -> b -> TMap k a -> b
foldrWithKey :: TKey k => (k -> a -> b -> b) -> b -> TMap k a -> b
foldlWithKey :: TKey k => (b -> k -> a -> b) -> b -> TMap k a -> b
elems :: TKey k => TMap k a -> [a]
keys :: TKey k => TMap k a -> [k]
keysSet :: TKey k => TMap k a -> TSet k
assocs :: TKey k => TMap k a -> [(k, a)]
fromList :: TKey k => [(k, a)] -> TMap k a
fromListWith :: TKey k => (a -> a -> a) -> [(k, a)] -> TMap k a
fromListWithKey :: TKey k => (k -> a -> a -> a) -> [(k, a)] -> TMap k a
fromAscList :: TKey k => [(k, a)] -> TMap k a
fromAscListWith :: TKey k => (a -> a -> a) -> [(k, a)] -> TMap k a
fromAscListWithKey :: TKey k => (k -> a -> a -> a) -> [(k, a)] -> TMap k a
fromDistinctAscList :: TKey k => [(k, a)] -> TMap k a
filter :: TKey k => (a -> Bool) -> TMap k a -> TMap k a
filterWithKey :: TKey k => (k -> a -> Bool) -> TMap k a -> TMap k a
partition :: TKey k => (a -> Bool) -> TMap k a -> (TMap k a, TMap k a)
partitionWithKey :: TKey k => (k -> a -> Bool) -> TMap k a -> (TMap k a, TMap k a)
mapMaybe :: TKey k => (a -> Maybe b) -> TMap k a -> TMap k b
mapMaybeWithKey :: TKey k => (k -> a -> Maybe b) -> TMap k a -> TMap k b
mapEither :: TKey k => (a -> Either b c) -> TMap k a -> (TMap k b, TMap k c)
mapEitherWithKey :: TKey k => (k -> a -> Either b c) -> TMap k a -> (TMap k b, TMap k c)
split :: TKey k => k -> TMap k a -> (TMap k a, TMap k a)
splitLookup :: TKey k => k -> TMap k a -> (TMap k a, Maybe a, TMap k a)
isSubmapOf :: (TKey k, Eq a) => TMap k a -> TMap k a -> Bool
isSubmapOfBy :: TKey k => (a -> b -> Bool) -> TMap k a -> TMap k b -> Bool
findMin :: TKey k => TMap k a -> (k, a)
findMax :: TKey k => TMap k a -> (k, a)
deleteMin :: TKey k => TMap k a -> TMap k a
deleteMax :: TKey k => TMap k a -> TMap k a
deleteFindMin :: TKey k => TMap k a -> ((k, a), TMap k a)
deleteFindMax :: TKey k => TMap k a -> ((k, a), TMap k a)
updateMin :: TKey k => (a -> Maybe a) -> TMap k a -> TMap k a
updateMax :: TKey k => (a -> Maybe a) -> TMap k a -> TMap k a
updateMinWithKey :: TKey k => (k -> a -> Maybe a) -> TMap k a -> TMap k a
updateMaxWithKey :: TKey k => (k -> a -> Maybe a) -> TMap k a -> TMap k a
minView :: TKey k => TMap k a -> Maybe (a, TMap k a)
maxView :: TKey k => TMap k a -> Maybe (a, TMap k a)
minViewWithKey :: TKey k => TMap k a -> Maybe ((k, a), TMap k a)
maxViewWithKey :: TKey k => TMap k a -> Maybe ((k, a), TMap k a)
instance TKey k => Monoid (TMap k a)
instance (Ord k, TKey k, Ord a) => Ord (TMap k a)
instance (Eq k, TKey k, Eq a) => Eq (TMap k a)
instance (Show k, Show a, TKey k) => Show (TMap k a)
module Data.TrieSet
data TSet a
(\\) :: TKey a => TSet a -> TSet a -> TSet a
null :: TKey a => TSet a -> Bool
size :: TKey a => TSet a -> Int
member :: TKey a => a -> TSet a -> Bool
notMember :: TKey a => a -> TSet a -> Bool
isSubsetOf :: TKey a => TSet a -> TSet a -> Bool
isProperSubsetOf :: TKey a => TSet a -> TSet a -> Bool
empty :: TKey a => TSet a
singleton :: TKey a => a -> TSet a
insert :: TKey a => a -> TSet a -> TSet a
delete :: TKey a => a -> TSet a -> TSet a
union :: TKey a => TSet a -> TSet a -> TSet a
symmetricDifference :: TKey a => TSet a -> TSet a -> TSet a
intersection :: TKey a => TSet a -> TSet a -> TSet a
difference :: TKey a => TSet a -> TSet a -> TSet a
filter :: TKey a => (a -> Bool) -> TSet a -> TSet a
partition :: TKey a => (a -> Bool) -> TSet a -> (TSet a, TSet a)
split :: TKey a => a -> TSet a -> (TSet a, TSet a)
splitMember :: TKey a => a -> TSet a -> (TSet a, Bool, TSet a)
map :: (TKey a, TKey b) => (a -> b) -> TSet a -> TSet b
mapMonotonic :: (TKey a, TKey b) => (a -> b) -> TSet a -> TSet b
fold :: TKey a => (a -> b -> b) -> b -> TSet a -> b
foldl :: TKey b => (a -> b -> a) -> a -> TSet b -> a
foldr :: TKey a => (a -> b -> b) -> b -> TSet a -> b
findMin :: TKey a => TSet a -> a
findMax :: TKey a => TSet a -> a
deleteMin :: TKey a => TSet a -> TSet a
deleteMax :: TKey a => TSet a -> TSet a
deleteFindMin :: TKey a => TSet a -> (a, TSet a)
deleteFindMax :: TKey a => TSet a -> (a, TSet a)
minView :: TKey a => TSet a -> Maybe (a, TSet a)
maxView :: TKey a => TSet a -> Maybe (a, TSet a)
elems :: TKey a => TSet a -> [a]
toList :: TKey a => TSet a -> [a]
fromList :: TKey a => [a] -> TSet a
toAscList :: TKey a => TSet a -> [a]
fromAscList :: TKey a => [a] -> TSet a
fromDistinctAscList :: TKey a => [a] -> TSet a
instance TKey a => Monoid (TSet a)
instance (TKey a, Show a) => Show (TSet a)
instance (TKey a, Ord a) => Ord (TSet a)
instance TKey a => Eq (TSet a)