Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Synopsis
- data PseudoTrie t a
- beginsWith :: Eq t => PseudoTrie t a -> t -> Bool
- assign :: Eq t => NonEmpty t -> Maybe a -> PseudoTrie t a -> PseudoTrie t a
- merge :: Eq t => PseudoTrie t a -> PseudoTrie t a -> PseudoTrie t a
- add :: Eq t => NonEmpty t -> PseudoTrie t a -> PseudoTrie t a -> PseudoTrie t a
- toAssocs :: PseudoTrie t a -> [(NonEmpty t, a)]
- fromAssocs :: Eq t => [(NonEmpty t, a)] -> PseudoTrie t a
- lookup :: Eq t => NonEmpty t -> PseudoTrie t a -> Maybe a
- areDisjoint :: Eq t => PseudoTrie t a -> PseudoTrie t a -> Bool
- intersectionWith :: Eq t => (a -> b -> c) -> PseudoTrie t a -> PseudoTrie t b -> PseudoTrie t c
- prune :: PseudoTrie t a -> PseudoTrie t a
Documentation
data PseudoTrie t a Source #
Tagged rose tree with explicit emptyness
Instances
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 #
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 PseudoTrie
s
prune :: PseudoTrie t a -> PseudoTrie t a Source #
Needless intermediary elements are turned into shortcuts, Nil
's in
subtrees are also removed.