Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
on_update t ~f
is similar to Observer.on_update_exn
, but it does not cause t
to be necessary. Instead of the Initialized
update, there are updates for when a node becomes Necessary
or Unnecessary
. Here is a state diagram for the allowable sequences of Update.t
's that can be supplied to a particular f
:
/-----------------------------------------------------\ | / | | | v Start ------> Necessary ----------> Changed ------> Invalidated | | ^ | ^ | ^ | | | /---------/ \--/ | | v | v | \----------> Unnecessary -----------------------------/
If t
gets a new value during a stabilization but is unnecessary at the end of it, f
will _not_ be called with Changed
, but with Unnecessary
if allowed by the transition diagram. I.e. if the prior call to f
was with Necessary
or Changed
, f
will be called with Unnecessary
. If the prior call to f
was with Invalidated
or Unnecessary
, then f
will not be called.
One should typically use Observer.on_update_exn
, unless the Unnecessary
updates are needed.
include sig ... end
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t