Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
This module defines a generic data structure: Lazy tries based on lists
val empty : ('a, 'b) t
Create a new trie with the given components
val mem : ('a, 'b) t -> 'a list -> bool
Returns true if there is a value associated with the given path
val find : ('a, 'b) t -> 'a list -> 'b
Returns the value associated with the given path.
val find_all : ('a, 'b) t -> 'a list -> 'b list
Returns all values associated with the given path, most recent first.
Associates a value with the given path, or replaces if there was already one
The same but taking a lazy value
Associates a value with the given path, keeping previous bindings
The same but taking a lazy value
Removes all associations to a given key from the trie. Warning: doesn't cleanup branches that don't point to anything anymore
map_subtree tree path f
applies f
on value and children of the node found at path
in tree
, and bind the returned node back at that position in the tree
val iter : ('a list -> 'b -> unit) -> ('a, 'b) t -> unit
iters over all the bindings in the trie, top-down
val fold : ('acc -> 'a list -> 'b -> 'acc) -> ('a, 'b) t -> 'acc -> 'acc
folds over all bindings of the trie, bottom-up
val fold0 : ('acc -> 'a list -> 'b list -> 'acc) -> ('a, 'b) t -> 'acc -> 'acc
same as fold
, but the list of bindings at a given path is given at once
sub t p
returns the sub-trie associated with the path p
in the trie t
. If p
is not a valid path of t
, it returns an empty trie.
filter f t
returns t with all subtrees for which f key = false
pruned
graft tree path subtree
grafts the children of subtree
in tree
at path
, replacing the whole subtree
Lazy version of graft
Merges two tries, accepting an optional function to resolve value conflicts. The default function pushes right-hand values on top of left-hand ones