The trie (i.e., from "retrieval") data structure was invented by Edward Fredkin (it is a form of radix sort). The implementation stores string suffixes as a list because it is a PATRICIA trie (PATRICIA - Practical Algorithm to Retrieve Information Coded in Alphanumeric, D.R.Morrison (1968)).
This Erlang trie implementation uses binary keys.Copyright © 2010-2013 Michael Truog
Version: 1.4.0 Jan 10 2017 16:00:32 ------------------------------------------------------------------------
Authors: Michael Truog (mjtruog [at] gmail (dot) com).
The trie (i.e., from "retrieval") data structure was invented by Edward Fredkin (it is a form of radix sort). The implementation stores string suffixes as a list because it is a PATRICIA trie (PATRICIA - Practical Algorithm to Retrieve Information Coded in Alphanumeric, D.R.Morrison (1968)).
This Erlang trie implementation uses binary keys. Using binary keys means that other data structures are quicker alternatives, so this module is probably not a good choice, unless it is used for functions not available elsewhere.empty_trie() = '?TYPE_EMPTY'
nonempty_trie() = {integer(), integer(), tuple()}
trie() = nonempty_trie() | empty_trie()
append(Key::'?TYPE_NAME', Value::any(), Node::trie()) -> nonempty_trie()
append_list(Key::'?TYPE_NAME', ValueList::list(), Node::trie()) -> nonempty_trie()
erase_similar(Similar::'?TYPE_NAME', Node::trie()) -> ['?TYPE_NAME']
fetch(X1::'?TYPE_NAME', Node::nonempty_trie()) -> any()
fetch_keys(Node::trie()) -> ['?TYPE_NAME']
fetch_keys_similar(Similar::'?TYPE_NAME', Node::trie()) -> ['?TYPE_NAME']
find(X1::'?TYPE_NAME', Node::trie()) -> {ok, any()} | error
find_prefix(X1::'?TYPE_NAME', X2::trie()) -> {ok, any()} | prefix | error
find_prefix_longest(Match::'?TYPE_NAME', Node::trie()) -> {ok, '?TYPE_NAME', any()} | error
find_prefixes(Match::'?TYPE_NAME', Node::trie()) -> [{'?TYPE_NAME', any()}]
fold(F::fun(('?TYPE_NAME', any(), any()) -> any()), A::any(), Node::trie()) -> any()
fold_similar(Similar::'?TYPE_NAME', F::fun(('?TYPE_NAME', any(), any()) -> any()), A::any(), Node::trie()) -> any()
foldl(F::fun(('?TYPE_NAME', any(), any()) -> any()), A::any(), Node::trie()) -> any()
foldl_similar(Similar::'?TYPE_NAME', F::fun(('?TYPE_NAME', any(), any()) -> any()), A::any(), Node::trie()) -> any()
foldr(F::fun(('?TYPE_NAME', any(), any()) -> any()), A::any(), Node::trie()) -> any()
foldr_similar(Similar::'?TYPE_NAME', F::fun(('?TYPE_NAME', any(), any()) -> any()), A::any(), Node::trie()) -> any()
foreach(F::fun(('?TYPE_NAME', any()) -> any()), Node::trie()) -> any()
from_list(L::list()) -> trie()
is_key(X1::'?TYPE_NAME', Node::trie()) -> boolean()
new() -> empty_trie()
new(L::list()) -> trie()
prefix(Key::'?TYPE_NAME', Value::any(), Node::trie()) -> nonempty_trie()
size(Node::trie()) -> non_neg_integer()
store(Key::'?TYPE_NAME', Node::trie()) -> nonempty_trie()
store(Key::'?TYPE_NAME', NewValue::any(), Node::trie()) -> nonempty_trie()
to_list(Node::trie()) -> [{'?TYPE_NAME', any()}]
to_list_similar(Similar::'?TYPE_NAME', Node::trie()) -> [{'?TYPE_NAME', any()}]
update(X1::'?TYPE_NAME', F::fun((any()) -> any()), Node::nonempty_trie()) -> nonempty_trie()
update(Key::'?TYPE_NAME', F::fun((any()) -> any()), Initial::any(), Node::trie()) -> nonempty_trie()
update_counter(Key::'?TYPE_NAME', Increment::number(), Node::trie()) -> nonempty_trie()
Generated by EDoc, Jan 10 2017, 16:00:32.