where is upvar
claird at starbase.neosoft.com
Thu Sep 21 16:33:19 CEST 2000
In article <39C8FEAC.1668A1C4 at sage.att.com>,
Garry Hodgson <garry at sage.att.com> wrote:
>Harald Kirsch wrote:
>> Jon Ribbens <jon+python-list at unequivocal.co.uk> writes:
>> > Accessing variables in other peoples' scopes directly is nasty anyway,
>> > use function arguments ;-).
>> Not if it is documented and if the sole purpose of a certain function
>> is to do that in a defined way. Those functions are sometimes called
>> `control structures'. It seems like Tcl is a bit ahead of Python here,
>> as it allows to create functions which look, smell and work like
>> custom made control structures.
>it's arguable whether this is a good thing or not. i've used languages
>which allowed this, including tcl. it's cute, but of limited utility.
>and the readability cost can be high.
I've got a long speech on this topic on which I've been
working for several years. My one-sentence summary:
more and more, I'm moving toward the Python camp that
scorns such cuteness.
On the other hand, it's not as much of a problem in Tcl
as might appear from the outside.
Here's a jumble of the main points I think need to be
understand on this score:
* [upvar] and [trace] can be considered together;
* [upvar] has two uses: syntactic trickiness and
* introspection is indispensable, but probably
never safe in the hands of application developers;
* Python feels no shame that it can't create new
* Tcl gets fascinating use from [trace];
* Tcl is an interesting general-purpose computing
language. Python is a computing language for the
streamlined development of applications.
I like Tcl a lot, and frequently use [upvar]. With good
discipline, it *enhances* readability. In the wrong
hands, it's a rapid entropy-generator.
Cameron Laird <claird at NeoSoft.com>
More information about the Python-list