From 932e657e38665afa1da1aab549977841abbd9dcf Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Wed, 7 Oct 2026 18:25:43 -0300 Subject: drop journal in favor of local branch history --- lib/kernel/Path.mli | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'lib/kernel/Path.mli') diff --git a/lib/kernel/Path.mli b/lib/kernel/Path.mli index 571e59c..e331b3a 100644 --- a/lib/kernel/Path.mli +++ b/lib/kernel/Path.mli @@ -4,6 +4,7 @@ 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 val update : @@ -14,9 +15,24 @@ val update : 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. *) +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 -- cgit v1.2.3