All primitive declarative actions:
- Do not commit.
- Give no transients.
- Make no changes to storage.
- Do not communicate.
- Redirect no bindings.
All declarative action combinators are:
- Functionally conducting
(see the basic action A1 and A2).
bind T to Y: a primitive declarative action, where
T is a token and Y is a yielder of bindable data. Represents creating a piece of scoped
information.
- Indivisible. Completes when Y yields data of sort
bindable. Fails otherwise.
- Produces the binding of the token T to the bindable data.
Example
unbind T: a primitive declarative action,
where T is a token. Represents hiding a piece of scoped
information, making a hole in its scope.
- Indivisible. Completes.
- Produces the binding of the token T to the datum
unknown.
OBS:This action is not implemented by the action interpreter.
rebind: a primitive declarative action. Represents propagation of scoped
information. Unit for the declarative action A1 hence A2.
- Indivisible. Always completes.
- Produces all received bindings.
Example
produce Y: a primitive declarative action.
Represents production of reified scoped information.
- Indivisible. Completes when Y yields a datum of sort
bindings.
- Produces the bindings yielded by Y.
OBS:This action is not implemented by the action interpreter.
furthermore A: a declarative combination of the
action A. Represents propagating the received bindings, but
letting bindings produced by A take precedence when there is a
conflict.
- Basically as A.
- Functionally as A.
- Declaratively as rebind moreover A.
Example
A1 moreover A2: a declarative combination of actions
A1 , A2. Like A1 and A2, but gives priority to bindings produced by
A2.
- Basically interleaving
(see the
basic action
A1 and A2).
Declaratively overlaying: The bindings
received by the combination of A1 , A2 are received by
both A1 , A2. On normal termination the bindings produced
by A1, overlaid with those produced by A2, are produced
by the combined action.
Example
A1 hence A2: a declarative combination of actions
A1 , A2.
Represents passing on scoped information, restricting the bindings
received by A2.
- Basically sequencing
(see the
basic action
A1 and then A2).
Declaratively composing: The bindings received by the combination
of A1 , A2 are received by A1. Only the bindings produced by
A1 are received
by A2 (provided that it is performed). Only the bindings
produced by A2 are produced by the combined action.
Example
A1 before A2: a declarative combination of actions
A1 , A2.
Represents accumulating scoped information.
- Basically sequencing
(see the
basic action
A1 and then A2).
Declaratively accumulating: The bindings
received by the combination of A1 , A2 are received by
A1. The bindings received by the combined action, overlaid with the
bindings produced by A1, are received by A2 (provided that
it is performed). On normal termination the bindings produced
by A1, overlaid with those produced by A2, are produced
by the combined action.
Example
|