blob: e95505df307103fe401ed1de773b0509b99a0f1d (
plain) (
tree)
|
|
type t
val this : t
val ( @/ ) : string -> t -> t
val of_list : string list -> t
val to_list : t -> string list
val to_string : t -> string
val lookup : Protocols.Handle.t -> t -> (Protocols.Handle.t, Concepts.Condition.condition) result
(** what [path] reaches, or [None] when some part of it is not there. *)
val find :
Protocols.Handle.t -> t -> (Protocols.Handle.t option, Concepts.Condition.condition) result
val update :
Protocols.Handle.t ->
t ->
string ->
Protocols.Handle.t option ->
Protocols.Handle.t option ->
(bool, Concepts.Condition.condition) result
(** [assoc handle path key value] derives [handle] with [key] under
[path] bound to [value], or unbound when [None]. *)
val assoc :
Protocols.Handle.t ->
t ->
string ->
Protocols.Handle.t option ->
(Protocols.Handle.t, Concepts.Condition.condition) result
(** every change of [assoc] at once: each object on the way is derived
once, so the changes to a branch land as one successor state. An
object on the way that is not there yet is handed to its parent as a
directory of what the changes put in it. *)
val assoc_all :
Protocols.Handle.t ->
(t * string * Protocols.Handle.t option) list ->
(Protocols.Handle.t, Concepts.Condition.condition) result
(** the paths, relative to [a] and [b], that differ between them. Equal
addresses are not descended, so this costs what changed. Every child
is compared, so diff a branch's \multigroup rather than the branch,
whose \previous differs whenever anything does. *)
val diff : Protocols.Handle.t -> Protocols.Handle.t -> (t list, Concepts.Condition.condition) result
|