Actions
The leaves of the tree are actions, which are the final point of the whole execution mechanism.
They are supposed to be implemented either using rust
or other languages
and mix-in on the execution stage.
The actions have 2 keywords to mark:
impl
means some job or action that can take time and be asynchronouscond
means some activity to check some conditions and immediately returns result
In practice, the engine does not see difference
in the language, they can be marked as an operation with empty or lacking implementation.
impl action1(a:string); // here the semicolon is required
impl action2(b:object){} // here, not
cond cond1(c:num);
cond cond2(d:array){}
Contract
The contract of the definition and invocation should coincide, otherwise the execution will throw an exception
impl action(c:num)
root main action() // the exception will be raised since the argument is uncovered.