- From: Henry S. Thompson <ht@inf.ed.ac.uk>
- Date: Thu, 07 Jun 2007 10:33:41 +0100
- To: Jeni Tennison <jeni@jenitennison.com>
- Cc: public-xml-processing-model-wg@w3.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Jeni Tennison writes: > . . . I think Henry's saying that he wants dynamic scoping of options. Right. 'eval' is a problem for programming languages in general. I'm aware of three approaches: 1) Dynamic scoping -- bindings go on the stack, variable references look up the stack, no constraints. [Shallow binding optimisation is possible, but doesn't change the semantics.] Out-of-context 'eval' uses the dynamic bindings, _or_ closures which effectively encapsulate a particular binding/stack state. [Interlisp] 2) Lexical scoping -- bindings go on the stack, but variable references restricted to lexically containing context. Out-of-context 'eval' doesn't work/not allowed. [C, Java] 3) And then there's Python -- it's essentially lexically scoped, with a special category of 'global' variables, _and_ the ability to reify the local and global binding state. Out-of-context 'eval' works if you use pass around the reified binding states. It seems to me we could choose any one of these. We already _have_ a binding stack, namely the environment. In practice, I see three possibilities: 1) Straight lexical -- variable references are possible only to options bound in the surrounding <p:pipeline>; 2) Straight dynamic -- variable references are possible to any option with a binding in the environment, and the environment is passed through 'calls' to named pipelines; 3) Pythonic -- variable references are possible to any option with a binding in the environment, and the environment _may_ be passed through 'calls' to named pipelines. Two variants -- the caller decides whether the environment passes; the called pipeline decides. I could live with any of these. (1) would do for v1. Eventually, I think I'd like (3), with control on the side of the caller. 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) iD8DBQFGZ9D6kjnJixAXWBoRAotKAJ9QZsh1pzTdLOxF1ZNc0zvy5I2M0QCfSzAa FoIJdVacZyAix3ng0RSo5VM= =4ng/ -----END PGP SIGNATURE-----
Received on Thursday, 7 June 2007 09:33:50 UTC