Legend:
Library
Module
Module type
Parameter
Class
Class type
Tree provides immutable, in-memory partial mirror of the context, with lazy reads and delayed writes.
Trees are immutable and non-persistent (they disappear if the host crash), held in memory for efficiency, where reads are done lazily and writes are done only when needed, e.g. on Context.commit. If a key is modified twice, only the last value will be written to disk on commit.
add t k v is an Lwt promise that resolves to c such that:
k is bound to v in c;
and c is similar to t otherwise.
If k was already bound in t to a value that is physically equal to v, the result of the function is a promise that resolves to t. Otherwise, the previous binding of k in t disappears.
remove t k v is an Lwt promise that resolves to c such that:
k is unbound in c;
and c is similar to t otherwise.
Folding
val fold :
?depth:[ `Eq of int| `Le of int| `Lt of int| `Ge of int| `Gt of int ]->tree->key->init:'a->f:(key->tree->'a->'aLwt.t)->'aLwt.t
fold ?depth t root ~init ~f recursively folds over the trees and values of t. The f callbacks are called with a key relative to root. f is never called with an empty key for values; i.e., folding over a value is a no-op.
Elements are traversed in lexical order of keys.
The depth is 0-indexed. If depth is set (by default it is not), then f is only called when the conditions described by the parameter is true:
Eq d folds over nodes and contents of depth exactly d.
Lt d folds over nodes and contents of depth strictly less than d.
Le d folds over nodes and contents of depth less than or equal to d.
Gt d folds over nodes and contents of depth strictly more than d.
Ge d folds over nodes and contents of depth more than or equal to d.