Journal of Functional Programming · 2000 · 79 citations · 11 references
ComputingComputer ScienceAlgorithmsData StructuresProgramming LanguagesData Structure AlgorithmsData TypesGeneric ProgrammingRecursion TheorySearching AlgorithmsType SystemsPolymorphic RecursionPolymorphic Type SystemsPolymorphic TypesRecursionRecursive TypesTree SearchTrie Data StructuresTrie Structures
A trie is a search tree scheme that employs the structure of search keys to organize information. Tries were originally devised as a means to represent a collection of records indexed by strings over a fixed alphabet. Based on work by C. P. Wadsworth and others, R. H. Connelly and F. L. Morris generalized the concept to permit indexing by elements built according to an arbitrary signature. Here we go one step further, and define tries and operations on tries generically for arbitrary datatypes of first-order kind, including parameterized and nested datatypes. The derivation employs techniques recently developed in the context of polytypic programming and can be regarded as a comprehensive case study in this new programming paradigm. It is well known that for the implementation of generalized tries, nested datatypes and polymorphic recursion are needed. Implementing tries for first-order kinded datatypes places even greater demands on the type system: it requires rank-2 type signatures and second-order nested datatypes. Despite these requirements, the definition of tries is surprisingly simple, which is mostly due to the framework of polytypic programming.
11
The Art of Computer Programming
G.E. Whitesides · Nuclear Science and Engineering · 1970 · 6.1K citations
Fundamental properties of infinite trees
Bruno Courcelle · Theoretical Computer Science · 1983 · 364 citations
File searching using variable length keys
Rene De La Briandais · 1959 · 364 citations · Full text
PolyP---a polytypic programming language extension
Patrik Jansson, Johan Jeuring · 1997 · 246 citations · Full text