tries-0.0.4.2: Various trie implementations in Haskell

Safe HaskellSafe
LanguageHaskell2010

Data.Trie.Pseudo

Synopsis

Documentation

data PseudoTrie t a Source #

Tagged rose tree with explicit emptyness

Constructors

More t (Maybe a) (NonEmpty (PseudoTrie t a)) 
Rest (NonEmpty t) a 
Nil 

Instances

Functor (PseudoTrie t) Source # 

Methods

fmap :: (a -> b) -> PseudoTrie t a -> PseudoTrie t b #

(<$) :: a -> PseudoTrie t b -> PseudoTrie t a #

Foldable (PseudoTrie t) Source # 

Methods

fold :: Monoid m => PseudoTrie t m -> m #

foldMap :: Monoid m => (a -> m) -> PseudoTrie t a -> m #

foldr :: (a -> b -> b) -> b -> PseudoTrie t a -> b #

foldr' :: (a -> b -> b) -> b -> PseudoTrie t a -> b #

foldl :: (b -> a -> b) -> b -> PseudoTrie t a -> b #

foldl' :: (b -> a -> b) -> b -> PseudoTrie t a -> b #

foldr1 :: (a -> a -> a) -> PseudoTrie t a -> a #

foldl1 :: (a -> a -> a) -> PseudoTrie t a -> a #

toList :: PseudoTrie t a -> [a] #

null :: PseudoTrie t a -> Bool #

length :: PseudoTrie t a -> Int #

elem :: Eq a => a -> PseudoTrie t a -> Bool #

maximum :: Ord a => PseudoTrie t a -> a #

minimum :: Ord a => PseudoTrie t a -> a #

sum :: Num a => PseudoTrie t a -> a #

product :: Num a => PseudoTrie t a -> a #

Traversable (PseudoTrie t) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> PseudoTrie t a -> f (PseudoTrie t b) #

sequenceA :: Applicative f => PseudoTrie t (f a) -> f (PseudoTrie t a) #

mapM :: Monad m => (a -> m b) -> PseudoTrie t a -> m (PseudoTrie t b) #

sequence :: Monad m => PseudoTrie t (m a) -> m (PseudoTrie t a) #

(Eq t, Eq a) => Eq (PseudoTrie t a) Source # 

Methods

(==) :: PseudoTrie t a -> PseudoTrie t a -> Bool #

(/=) :: PseudoTrie t a -> PseudoTrie t a -> Bool #

(Show t, Show a) => Show (PseudoTrie t a) Source # 

Methods

showsPrec :: Int -> PseudoTrie t a -> ShowS #

show :: PseudoTrie t a -> String #

showList :: [PseudoTrie t a] -> ShowS #

Eq t => Monoid (PseudoTrie t a) Source #

Overwriting instance

Methods

mempty :: PseudoTrie t a #

mappend :: PseudoTrie t a -> PseudoTrie t a -> PseudoTrie t a #

mconcat :: [PseudoTrie t a] -> PseudoTrie t a #

beginsWith :: Eq t => PseudoTrie t a -> t -> Bool Source #

assign :: Eq t => NonEmpty t -> Maybe a -> PseudoTrie t a -> PseudoTrie t a Source #

Provides a form of deletion by setting a path to Nothing, but doesn't cleanup like prune

merge :: Eq t => PseudoTrie t a -> PseudoTrie t a -> PseudoTrie t a Source #

Overwrite the LHS point-wise with the RHS's contents

add :: Eq t => NonEmpty t -> PseudoTrie t a -> PseudoTrie t a -> PseudoTrie t a Source #

toAssocs :: PseudoTrie t a -> [(NonEmpty t, a)] Source #

fromAssocs :: Eq t => [(NonEmpty t, a)] -> PseudoTrie t a Source #

lookup :: Eq t => NonEmpty t -> PseudoTrie t a -> Maybe a Source #

areDisjoint :: Eq t => PseudoTrie t a -> PseudoTrie t a -> Bool Source #

Simple test on the heads of two tries

intersectionWith :: Eq t => (a -> b -> c) -> PseudoTrie t a -> PseudoTrie t b -> PseudoTrie t c Source #

The meet of two PseudoTries

prune :: PseudoTrie t a -> PseudoTrie t a Source #

Needless intermediary elements are turned into shortcuts, Nil's in subtrees are also removed.