Added a collapse function to Trie

This commit is contained in:
markus
2003-11-11 11:59:21 +00:00
parent b568541112
commit 9b47b4aa12
3 changed files with 15 additions and 0 deletions

View File

@@ -10,6 +10,7 @@
module Trie (
tcompile,
collapse,
Trie,
trieLookup,
decompose,
@@ -35,6 +36,14 @@ optimize :: TrieT -> Trie
optimize (TrieT (xs,res)) = Trie ([(c,optimize t) | (c,t) <- xs] |->+ empty,
res)
collapse :: Trie -> [(String,[(Attr,String)])]
collapse trie = collapse' trie []
where collapse' (Trie (map,(x:xs))) s = if (isEmpty map) then [(reverse s,(x:xs))]
else (reverse s,(x:xs)):
concat [ collapse' trie (c:s) | (c,trie) <- flatten map]
collapse' (Trie (map,[])) s
= concat [ collapse' trie (c:s) | (c,trie) <- flatten map]
tcompile :: [(String,[(Attr,String)])] -> Trie
tcompile xs = optimize $ build xs emptyTrie