type t
find_or_add t ~unique_id_across_jenga:typ ~unique_f_across_jenga:f
computes
f (paths t)
, making sure f
is only called once per t
.
Values for typ
and f
must be the same for every call of
find_or_add
for a given t
.
In particular in the current implementation, passing different ids will raise
but passing different functions will probably give you incorrect results.
Note that paths t
is shallow, that is it ignores subgroups of t
.
val find_or_add : t ‑> unique_id_across_jenga:'a Core.Type_equal.Id.t ‑> unique_f_across_jenga:(Path.t list ‑> 'a) ‑> 'a
find_or_add t ~unique_id_across_jenga:typ ~unique_f_across_jenga:f
computes
f (paths t)
, making sure f
is only called once per t
.
Values for typ
and f
must be the same for every call of
find_or_add
for a given t
.
In particular in the current implementation, passing different ids will raise
but passing different functions will probably give you incorrect results.
Note that paths t
is shallow, that is it ignores subgroups of t
.