Declaring Variables
How do you define new variables in the system?
Variables in Lasp are identified using a tuple of a globally unique identifier for the variable and the variable's type. Each variable needs to have a type that points to an implementation of a CRDT from our types library.
Let's declare a set named <<"set">>
(an Erlang binary) that's a CRDT state-based Observed-Remove Set.
> {ok, {Id, Type, Metadata, Value}} = lasp:declare({<<"set">>, state_orset}, state_orset).
{ok,{{<<"set">>,state_orset},
state_orset,
[{clock,[{<<170,227,142,126,63,64,19,227,195,66,39,125,58,
195,75,134,148,109,168,...>>,
1}]}],
{state_orset,[]}}}
Here, after the declare
call is issued, a few things happen:
- A tuple is returned containing the identifier, type, metadata about the object, and the object's value.
- The value of the variable is defaulted at the bottom value for the CRDT: in this case, the set's bottom value is the empty set.
- Each node in the system will have a different value for the variable, and eventually converge after anti-entropy is performed.
Updated less than a minute ago