The TernaryTrees package
Ternary trees are an efficient structure often used for storing strings for fast lookups. This package implements a generic tree for storing lists of Ord instances, and a specialised String implementation which is about 30% faster than the generic version.
An example program is provided what shows how to use the package as a dictionary program for spell checking, and how it can be used to serialise data with Don Stewart's Data.Binary package.
From my testing, using the /usr/share/dict/words file on my system (over 230,000 words), inserting all words, checking they all exist in the tree, writing them to a binary file, reading them back in and checking the read in result is the same as the original takes slightly over 3 seconds using the StringSet. The written file is also slightly smaller than the input (by over 40% in some cases).
New in this version:
Changed TernaryMap to match the Set implementations more.
Changed the Data.Binary instance again, hopefully it'll remain more stable from here on.
Changed the tdict source to actually do what i said it would, by actually asking the user for input.
© 2009 by Alex Mason (http://random.axman6.com/blog/). BSD3 license.
|Versions||0.0.1, 0.0.2, 0.0.2.1, 0.0.2.2, 0.0.3.0, 0.0.4.0, 0.1.0.0, 0.1.1.0, 0.1.1.1, 0.1.2.0, 0.1.3.0, 0.1.3.1, 0.1.3.2, 0.1.3.3, 0.1.3.4, 0.2.0.0, 0.2.0.2|
|Dependencies||base (>=184.108.40.206 && <220.127.116.11), binary (>=0.5.0.0) [details]|
|Maintainer||Alex Mason (irc: Axman6) <firstname.lastname@example.org>|
|Uploaded||Tue Jun 30 16:33:42 UTC 2009 by AlexMason|
|Downloads||4103 total (59 in the last 30 days)|
|Status||Docs not available [build log]
Last success reported on 2015-12-08 [all 7 reports]
For package maintainers and hackage trustees