val empty : t
empty is the empty key. It refers to the top-level dictionary.
val v : string -> t
v s is the string
s as a key. A key
"/foo/bar" is decomposed into the segments
"bar". The initial
"/" is always ignored so
"/foo/bar" are equal.
add t s is the concatenated key
val segments : t -> string list
segments t is
t's list of segments.
val basename : t -> string
basename t is the last segment of
basename empty is the empty string
parent t is the key without the last segment.
parent empty is
t, the invariant have
parent t / basename t is
val to_string : t -> string
to_string t is the string representation of
"/" is used as separator between segements and it always starts with