Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Lwd
Sourcemap d ~f
is the document that has value f x
whenever d
has value x
map2 d1 d2 ~f
is the document that has value f x1 x2
whenever d1
has value x1
and d2
has value x2
Monadic operator join d
is the document pointed to by document d
. This is powerful but potentially costly in case of recomputation.
Applicative: app df dx
is the document that has value f x
whenever df
has value f
and dx
has value x
is_pure x
will return Some v
if x
was built with pure v
or return v
.
Normal code should not rely on the "reactive-ness" of a value, but this is often useful for optimising reactive data structures.
Change the variable's content, invalidating all documents depending on it.
Observe the current value of the variable, without any dependency tracking.
A primitive document. It can correspond, for example, to a primitive UI element.
A primitive is a resource with acquire
and release
functions to manage its lifecycle.
create a new primitive document.
Some document might change variables during their evaluation. These are called "unstable" documents.
Evaluating these might need many passes to eventually converge to a value. The `fix` operator tries to stabilize a sub-document by repeating evaluation until a stable condition is reached.
Releasing unused graphs
A root of computation, whose value(s) over time we're interested in.
observe x
creates a root that contains document x
.
Change the callback for the root. See observe
for more details.
Force the computation of the value for this root. The value is cached, so this is idempotent, until the next invalidation.
is_damaged root
is true if the root doesn't have a valid value in cache. This can be the case if the value was never computed, or if it was computed and then invalidated.
Forget about this root and release sub-values no longer reachable from any root.