Skip to main content Skip to navigation

Miscellaneous commands

Dependency Link

An alternative way of defining an action specification is first to declare the action as a procedure/function, and then specify the dependency link using the command:

dependency-link:
        identifier ~> [ identifier-list ] ;

where each identifier in the identifier list refers to an action (procedure) that depends on the value of the object referred to by identifier. So the action:

proc p : a, b, c { /* action body */ }

is equivalent to

a ~> [ p ] ;
b ~> [ p ] ;
c ~> [ p ] ;

Note that the dependency link command adds dependency linkage to actions. If the user wants to remove a particular linkage, the whole action must be re-specified. For example, to remove c from the specification of action p above, p must be re-defined as:

proc p : a, b { /* action body */ }

Query

The query command has the form:

? lvalue ;

The query command prints the definition of the object referred to by lvalue on the stdout of the UNIX environment. The format of printing a RWV is:

value
RWV-name ~> [ identifier-list ] ;

The format of printing a formula variable is:

formula-variable-name is expression ;
formula-variable-name ~> [ identifier-list ] ;

The format of printing a function definition is:

func function-name
{ function-body }
function-name ~> [ identifier-list ] ;

where proc may be printed instead of func depending on which word was used by the user.

The format of printing an action specification is:

proc action-name : identifier-list
{ action-body }
action-name ~> [ identifier-list ] ;

where func may be printed instead of proc depending on which word was used by the user.

The query command is an ad hoc feature in the language and contains bugs in the current implementation of EDEN; for instance,

? L[1];

prints the definition of L instead of L[1].