Private.Graph_infoSourcetype t = {tree : (Bonsai__.Node_path.t,
Bonsai__.Node_path.t,
Bonsai__.Node_path.comparator_witness)
Base.Map.t;dag : (Bonsai__.Node_path.t,
Bonsai__.Node_path.t list,
Bonsai__.Node_path.comparator_witness)
Base.Map.t;info : (Bonsai__.Node_path.t,
Node_info.t,
Bonsai__.Node_path.comparator_witness)
Base.Map.t;}There are a few models for understanding a Computation.t.
Assoc has only one copy in this model, even though the computation must run for every single entry in the input map.eval. We do not currently generate this version of the graph, since it cannot be determined by static analysis of the Bonsai graph.We expose the first two of these models as the tree and dag properties, represented as a map from dependency(s) to dependent. In addition, we also expose a mapping of nodes to node metadata.
include Core.Bin_prot.Binable.S with type t := tinclude Bin_prot.Binable.S_only_functions with type t := tThis function only needs implementation if t exposed to be a polymorphic variant. Despite what the type reads, this does *not* produce a function after reading; instead it takes the constructor tag (int) before reading and reads the rest of the variant t afterwards.
val iter_graph_updates :
('model, 'static_action, 'dynamic_action, 'result) Computation.t ->
on_update:(t -> unit) ->
('model, 'static_action, 'dynamic_action, 'result) Computation.tIterate through a computation to build up a t with information about the graph. The Lazy portions of the graph are traversed lazily; thus, rather than putting the resulting t in the return value of this function, we require a callback for receiving all the updates, including the immediately traversed ones and the ones that are delayed by Lazy.
val iter_graph_updates_packed :
'a Computation.packed ->
on_update:(t -> unit) ->
'a Computation.packed