PatriciaTree.NodeWithIdSourceHere, nodes also contain a unique id, e.g. so that they can be used as keys of maps or hashtables.
module Key : sig ... endinclude NODE
with type 'a key = 'a Key.t
with type ('key, 'map) value = ('key, 'map) Value.tThe type of value, which depends on the type of the key and the type of the map.
The type of the map, which is parameterized by a type.
A singleton leaf, similar to BASE_MAP.singleton
A branch node. This shouldn't be called externally unless you know what you're doing! Doing so could easily break the data structure's invariants.
When called, it assumes that:
tree0 nor tree1 should be empty.branching_bit should have a single bit setprefix should be normalized (bits below branching_bit set to zero)tree0 should have their to_int start by prefix followed by 0 at position branching_bit).tree1 should have their to_int start by prefix followed by 0 at position branching_bit).type 'map view = private | Empty : 'map viewCan happen only at the toplevel: there is no empty interior node.
*)| Branch : {} -> 'map viewBranching bit contains only one bit set; the corresponding mask is (branching_bit - 1). The prefixes are normalized: the bits below the branching bit are set to zero (i.e. prefix & (branching_bit - 1) = 0).
*)| Leaf : {} -> 'map viewA key -> value mapping.
*)This makes the map nodes accessible to the pattern matching algorithm; this corresponds 1:1 to the SimpleNode implementation. This just needs to be copy-and-pasted for every node type.