packages feed

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