pred-trie 0.0.11 → 0.0.12
raw patch · 3 files changed
+16/−2 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Trie.Pred.Unified: assignLit :: Eq t => [t] -> Maybe x -> RUPTrie t x -> RUPTrie t x
+ Data.Trie.Pred.Unified.Tail: assignLit :: (Eq t) => NonEmpty t -> Maybe x -> UPTrie t x -> UPTrie t x
Files
pred-trie.cabal view
@@ -1,5 +1,5 @@ Name: pred-trie-Version: 0.0.11+Version: 0.0.12 Author: Athan Clark <athan.clark@gmail.com> Maintainer: Athan Clark <athan.clark@gmail.com> License: BSD3
src/Data/Trie/Pred/Unified.hs view
@@ -1,5 +1,6 @@ module Data.Trie.Pred.Unified ( RUPTrie (..)+ , assignLit , showTrie , merge , lookup@@ -10,7 +11,7 @@ ) where import Prelude hiding (lookup)-import Data.Trie.Pred.Unified.Tail hiding (lookup, lookupNearestParent, merge)+import Data.Trie.Pred.Unified.Tail hiding (lookup, lookupNearestParent, merge, assignLit) import qualified Data.Trie.Pred.Unified.Tail as NU import Data.Monoid import Data.Maybe (fromMaybe)@@ -28,6 +29,11 @@ instance (Eq t) => Monoid (RUPTrie t x) where mempty = Rooted Nothing [] mappend = Data.Trie.Pred.Unified.merge++assignLit :: Eq t => [t] -> Maybe x -> RUPTrie t x -> RUPTrie t x+assignLit [] mx (Rooted my ys) = Rooted mx ys+assignLit ts mx (Rooted my ys) = Rooted my $+ map (NU.assignLit (NE.fromList ts) mx) ys merge :: (Eq t) => RUPTrie t x -> RUPTrie t x -> RUPTrie t x merge (Rooted mx xs) (Rooted my ys) =
src/Data/Trie/Pred/Unified/Tail.hs view
@@ -5,6 +5,7 @@ module Data.Trie.Pred.Unified.Tail ( UPTrie (..) , showTail+ , assignLit , lookup , lookupNearestParent , merge@@ -35,6 +36,13 @@ showTail (UMore t mx xs) = "(UMore " ++ show t ++ ") [" ++ concatMap showTail xs ++ "] " showTail (UPred t p mx xs) = "(UPred " ++ show t ++ ") [" ++ concatMap showTail xs ++ "] " +assignLit :: (Eq t) => NonEmpty t -> Maybe x -> UPTrie t x -> UPTrie t x+assignLit (t:|ts) mx yy@(UMore p my ys)+ | t == p = case ts of+ [] -> UMore p mx ys+ _ -> UMore p my $ map (assignLit (NE.fromList ts) mx) ys+ | otherwise = yy+assignLit _ _ yy@(UPred _ _ _ _) = yy -- | Overwrites when similar, leaves untouched when not merge :: (Eq t) => UPTrie t x -> UPTrie t x -> UPTrie t x