packages feed

pred-trie 0.0.3 → 0.0.4

raw patch · 3 files changed

+22/−1 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Trie.Pred.Disjoint: lookup :: (Eq t) => [t] -> RPDTrie p t x -> Maybe x
+ Data.Trie.Pred.Unified: lookup :: (Eq t) => [t] -> RPUTrie t x -> Maybe x

Files

pred-trie.cabal view
@@ -1,5 +1,5 @@ Name:                   pred-trie-Version:                0.0.3+Version:                0.0.4 Author:                 Athan Clark <athan.clark@gmail.com> Maintainer:             Athan Clark <athan.clark@gmail.com> License:                BSD3
src/Data/Trie/Pred/Disjoint.hs view
@@ -3,8 +3,10 @@ import Data.Trie.Pred.Disjoint.Tail import qualified Data.Trie.Pred.Disjoint.Tail as ND import Data.Monoid+import qualified Data.List.NonEmpty as NE  +-- | A Rooted, predicate, disjointly indexed trie data RPDTrie p t x = Rooted (Maybe x) [NDPTrie p t x]  instance (Eq p, Eq t) => Monoid (RPDTrie p t x) where@@ -19,3 +21,12 @@     go a [] = [a]     go a (b:bs) | ND.areDisjoint a b =          a : b : bs                 | otherwise          = (ND.merge a b) : bs++lookup :: (Eq t) => [t] -> RPDTrie p t x -> Maybe x+lookup [] (Rooted mx _) = mx+lookup ts (Rooted _ xs) = getFirst $ map (ND.lookup $ NE.fromList ts) xs+  where+    getFirst :: [Maybe a] -> Maybe a+    getFirst [] = Nothing+    getFirst (Nothing:xs) = getFirst xs+    getFirst (Just x :xs) = Just x
src/Data/Trie/Pred/Unified.hs view
@@ -3,6 +3,7 @@ import Data.Trie.Pred.Unified.Tail import qualified Data.Trie.Pred.Unified.Tail as NU import Data.Monoid+import qualified Data.List.NonEmpty as NE   data RPUTrie t x = Rooted (Maybe x) [NUPTrie t x]@@ -19,3 +20,12 @@     go a [] = [a]     go a (b:bs) | NU.areDisjoint a b =          a : b : bs                 | otherwise          = (NU.merge a b) : bs++lookup :: (Eq t) => [t] -> RPUTrie t x -> Maybe x+lookup [] (Rooted mx _) = mx+lookup ts (Rooted _ xs) = getFirst $ map (NU.lookup $ NE.fromList ts) xs+  where+    getFirst :: [Maybe a] -> Maybe a+    getFirst [] = Nothing+    getFirst (Nothing:xs) = getFirst xs+    getFirst (Just x :xs) = Just x