See Introduction for the purpose, main references, and name.
The language has to express certain kinds of flow for the communication of information or authorities. Typically the flows are not symmetric. That is, they have direction. When I describe a given kind of flow, I might arbitrarily name the directions along it as "forward" and "backward", for example. One could adopt the practices of some railroads and call the directions "northbound" and "southbound". No matter how we label the two directions along a flow, when we describe the type of flow, we have to explain what kind of information and authority goes in each direction.
A type of flow taken together with a particular direction constitutes a "mode", similar to how the term is used in connection with the Mercury programming language.
Let's see whether my thinking coheres well enough at this point that I can give a table of the kinds of flow from the modal viewpoint.
| Flow Mode | example of one end | example of the other end |
|---|---|---|
| Value | foo! | foo? |
| Oracle Pool | <-> | >-< |
| Bag Channel | foo^ | foo# |
| Linear Flow | foo | foo |
Until some other rule becomes obviously better, I will make areas of scope for variables explicit, using (curly) braces. The braces will mean scope and only scope.
If I were going to require the variables to be declared, I'd say put them in vertical bars, as in Smalltalk. I'd have that just inside the opening left brace for the given scope. However, I think the use of variables can suffice to declare them, at least, provided that I use a special syntax to wrap the use of varaibles from an outer scope.
Prefix dollar sign can denote reference to a variable from the next outer scope.
Suffix bang marks where, in a given scope, the value of a copyable variable is being determined. At the places where the value of the copyable variable is being cited, the identifier appears naked.