Make.Expertmodule Snapshot : sig ... endThe underlying representations of Bonsai components. This module is provided "as is", without warranty of any kind, express or implied...
unpacked exposes the action type of a component as an existential.
type ('input, 'model, 'result) t = private | T : ('input, 'model, 'action, 'result) unpacked
* 'action Core_kernel.Type_equal.Id.t -> ('input, 'model, 'result) tEvery Bonsai component has a hidden 'action type, which can be revealed as an existential by pattern matching on t.
val reveal :
('input, 'model, 'result) nonexpert_t ->
('input, 'model, 'result) treveal t is just the identity, but it allows you to pattern match on the GADT to get the unpacked component (which you can eval) and the action's type ID.
val conceal :
('input, 'model, 'result) t ->
('input, 'model, 'result) nonexpert_tconceal is the inverse of reveal.
val of_full :
f:
(input:'input Incr.t ->
old_model:'model option Incr.t ->
model:'model Incr.t ->
inject:('action -> Event.t) ->
('model, 'action, 'result) Snapshot.t Incr.t) ->
action_type_id:'action Core_kernel.Type_equal.Id.t ->
('input, 'model, 'result) tBuilds a component out of the incremental function from 'model Incr.t to Snapshot.t Incr.t. This function is in the expert module because it is effectively a black box to the rest of the Bonsai library, which means optimize cannot do anything with it, for example.
val eval :
input:'input Incr.t ->
old_model:'model option Incr.t ->
model:'model Incr.t ->
inject:('action -> Event.t) ->
action_type_id:'action Core_kernel.Type_equal.Id.t ->
('input, 'model, 'action, 'result) unpacked ->
('model, 'action, 'result) Snapshot.t Incr.tWalks the component tree and builds a Snapshot.t Incr.t which will be recomputed when model and old_model change.
Performs constant-folding and other optimizations on the component tree. This function is called once-per-component tree, which should be roughly once-per-application life-cycle unless there is dynamic component tree creation going on (perhaps via of_full and eval).