-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | BK-tree implementation
--
-- Ternary Search Tree implementation.
@package tst
@version 0.1
-- | Implementation of a Ternary Search Tree:
-- https://en.wikipedia.org/wiki/Ternary_search_tree, which is a
-- structure useful to store any list-like thing. It is quite resistant
-- to non-random data without needing rebalancing and can be as fast or
-- faster than hash tables.
--
-- The usual finite map operations are provided, plus utilities to match
-- wildcarded words efficiently.
module Data.TST
data TST sym v
empty :: Ord sym => TST sym v
singleton :: Ord sym => [sym] -> v -> TST sym v
insert :: Ord sym => [sym] -> v -> TST sym v -> TST sym v
insertWith :: Ord sym => (v -> v -> v) -> [sym] -> v -> TST sym v -> TST sym v
lookup :: Ord sym => [sym] -> TST sym v -> Maybe v
-- | We don't need this and it's slow. But you've got to have a
-- delete!
delete :: Ord sym => [sym] -> TST sym v -> TST sym v
toList :: Ord sym => TST sym v -> [([sym], v)]
fromList :: Ord sym => [([sym], v)] -> TST sym v
data WildCard a
WildCard :: WildCard a
El :: a -> WildCard a
type WildList a = [WildCard a]
matchWL :: Ord sym => WildList sym -> TST sym v -> [([sym], v)]
instance Eq a => Eq (WildCard a)
instance Ord a => Ord (WildCard a)
instance Show a => Show (WildCard a)
instance (Show sym, Ord sym, Show v) => Show (TST sym v)
instance (Ord sym, Eq v) => Eq (TST sym v)
-- | A wrapper for TST sym ().
module Data.TSTSet
data TSTSet sym
empty :: Ord sym => TSTSet sym
singleton :: Ord sym => [sym] -> TSTSet sym
insert :: Ord sym => [sym] -> TSTSet sym -> TSTSet sym
member :: Ord sym => [sym] -> TSTSet sym -> Bool
delete :: Ord sym => [sym] -> TSTSet sym -> TSTSet sym
toList :: Ord sym => TSTSet sym -> [[sym]]
fromList :: Ord sym => [[sym]] -> TSTSet sym
data WildCard a
WildCard :: WildCard a
El :: a -> WildCard a
type WildList a = [WildCard a]
matchWL :: Ord sym => WildList sym -> TSTSet sym -> [[sym]]
instance (Show sym, Ord sym) => Show (TSTSet sym)
instance Ord sym => Eq (TSTSet sym)