Re: Taking good care of the environment . . .

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

So here's my reasoning/proposal for the environment.

(I'm going to concentrate on only two uses to which it is/can be put:

  a) bounding the set of candidate bindings for input ports
     (_readable ports_);
  b) determining the binding for the primary input if none is
     specified explicitly (_default readable port_).

I think the paramater/option and prefix issues are simpler, and don't
require the same care. . .)

The environment for every step is determined by three things:

 1) The environment for its containing subpipeline;
 2) Its own p:parameter, p:import-parameter, p:option and
    p:ignore-prefixes declarations;
 3) Its position in its containing subpipeline, first or later.

The environment for a subpipeline is determined by two things:

 1) The environment of its containing compound step;
 2) The idiosyncratic semantics of that particular compound step.

Here's how it think it goes:

The environment of every step is constructed from the environment of
its containing subpipeline by

 a) adding/replacing(?) params, options and prefixes based on its own
    markup in the obvious way;
 b) If it is not first in its containing subpipeline:
      If the preceding step has only one declared output, or an output
       marked as the default, make that the _default readable port_,
      otherwise remove any existing _default readable port_.
    (otherwise the _default readable port_ is unchanged)

The environment for a subpipeline is constructed from the environment
of its containing compound step as follows:

 a) The union of all the declared outputs of the contained steps are
    added to the _readable ports_;

 b) Any step-specific changes are done.

On this basis, we can state the following invariants:

 1) A step's input port is always bound to a _readable port_ from the
    environment for that step;

 2) A compound step's output port is always bound to a _readable port_
    from the environment of its subpipeline.

And the following defaulting rules:

 1) An unspecified primary input for a step is defaulted to the
    _default readable port_ of its environment;

 2) An unspecified primary output for a compound step is defaulted to
    what would be the _default readable port_ from the environment of
    a step after the last step in its subpipeline.

I think this all is clean and straightforward, but involves a number
of slight changes to the _status quo_.

ht
- -- 
 Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
                     Half-time member of W3C Team
    2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
            Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk
                   URL: http://www.ltg.ed.ac.uk/~ht/
[mail really from me _always_ has this .sig -- mail without it is forged spam]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)

iD8DBQFGAWhfkjnJixAXWBoRAhWBAJ9xWsHG4AkDSIgxBe0EGL4a1BilJQCfYOgx
f1v3Wz6GSmz96eNPw0aWBMc=
=8Ocq
-----END PGP SIGNATURE-----

Received on Wednesday, 21 March 2007 17:16:26 UTC