我需要在 Haskell 中实现一个通用的Trie实现,但我找不到。
我实现了自己的功能(这里只有键,我不需要 Trie 上的数据)但我想在 Haskell 中找到一个好的 Trie 实现以供将来使用(我是新手 Haskeller)。
我发现 Data.Trie 但键是 ByteString。
Data.Trie 是正确的选择吗?(然后我不知道如何使用它)
谢谢!!!:D
应要求从评论中移出...
我知道的唯一非常通用的 trie 实现是list-tries
package。它总是让我觉得有点过度设计,但一个人的“过于复杂”是另一个人的“功能齐全”,所以如果它适合你的目的,那就去吧。此外,该软件包似乎得到了积极的维护,这很好。
哦,由于包没有在我能看到的任何地方明确说明这一点:“Patricia trie”版本是一种将单分支节点序列压缩为存储公共密钥前缀的单个节点的 trie。所以对于键“aabb”和“aabc”,你会得到一个带有“aab”的节点,然后分支“b”和“c”。标准的 trie 总是一次分支一个元素。
http://hackage.haskell.org/package/TrieMap是我当时的一些工作。我并不完全清楚您所说的“通用”是什么意思,但TrieMap
支持或多或少的任意(递归,甚至!)代数数据类型,例如二叉树,作为特里键。