%\documentstyle{csart}

%\begin{document}

\section{Discussion}

     The notation described so far was intentionally minimal.
Some minor enhancements suggest themselves.  For
example it would be convenient to introduce ``slices'' of
indicies so that clumsy constructions like
\begin{verbatim}

    WHERE {x}
      IF
        (base <= x) AND (x < (base + count))
          ... body
        TRUE
          SKIP

\end{verbatim}
could be replace with something along the lines
\begin{verbatim}

    WHERE {[x FROM base FOR count]}
      ... body

\end{verbatim}
Doing this in a fully consistent way would probably require that ranks 
be able to include index slices as well as ``full indicies''.  This
might complicate the procedure interface, if distributions over
such ranks had to passed as parameters.

     A more interesting question is whether any of ideas discussed here
could be incorporated into a more dynamic scheme, which would allow
more general (non-rectangular) ``grids'' to be defined at run-time.
In our execution model processes are spawned whenever an index is declared.
In an analogous dynamic framework it might be possible to
bring an index into existence by ``allocating'' it rather than
declaring it.  This would dynamically spawn processes (which might
later be killed by de-allocating the index).  Moreover, through
the \verb$WHERE$ construct, these dynamic indicies could be allocated
at a localised point in an existing grid, permitting some form of
dynamic grid refinement---or, less ambitiously, simply the creation of
non-rectangular grids.  Certainly such a scheme requires modifications
to the simple ideas of rank and distribution described here---a much
more dynamic rank-like object would be needed, which would itself
have aspects of a distributed array, in the sense that it would contain
different (local) indicies at different sites.

%\end{document}


