| Deutsch English Français Italiano |
|
<vs00fd$10bgm$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: et99 <et99@rocketship1.me>
Newsgroups: comp.lang.tcl
Subject: Re: can this work?
Date: Tue, 25 Mar 2025 21:40:11 -0700
Organization: A noiseless patient Spider
Lines: 54
Message-ID: <vs00fd$10bgm$1@dont-email.me>
References: <vrjsse$1oane$1@dont-email.me>
<20250321163420.39ecbc0b40151daab77dcc27@domain.invalid>
<vrkkeq$2c2m0$1@dont-email.me> <vrkqq1$2hm9c$1@dont-email.me>
<vrmbb6$3vamk$1@dont-email.me> <vrmjv9$6fer$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 26 Mar 2025 05:40:13 +0100 (CET)
Injection-Info: dont-email.me; posting-host="59ae5c87b4ec8e8f95ef3c15933bc1c0";
logging-data="1060374"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/QzNOplH1yTaRmAzGWbT4r"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:OfZbBHXg2rJ3KWIM8ec7uHDKmSA=
In-Reply-To: <vrmjv9$6fer$1@dont-email.me>
Content-Language: en-US
Bytes: 2986
On 3/22/2025 8:11 AM, Rich wrote:
--snip--
> The for command is defined as always running expr on the middle
> argument. Whether you get a loop that looks up variable contents by
> that expr call to make the check dynamic, or a loop that runs expr on
> the exact same static values for each iteration, depends upon what you
> pass to the command. That depends upon what you write that is parsed
> by the Tcl parser.
>
>
>
Actually, the manual for the [for] command does not say it runs [expr], rather, it only says:
Then it repeatedly evaluates test as an expression;
And the command [expr] is not mentioned at all. Also, in the page with the 12 rules, it never defines the word expression.
The [if] command, however, does mention the use of [expr]:
The if command evaluates expr1 as an expression (in the same way that expr evaluates its argument).
I suppose one has to get deep into the weeds and fully understand the algorithm of [expr] to be able to parse it all. There, [expr] does define an expression.
One item that took me forever to understand is why in most commands, words such as in these 3,
set foo bar
set foo {bar}
set foo "bar"
the 2 types of quotes don't change the result here from the unquoted version. But in [expr] and therefore also in the first argument to [if] and the second to [for] a string has to be quoted in one of the 2 ways. So that,
if {$foo eq "bar"} ..
if {$foo eq {bar}} ..
is ok, but
if {$foo eq bar} ..
is not ok. And the reason is that,
expr {$foo eq bar}
also produces an error since operands in [expr] are not the same as tcl words. Here, [expr] complains about a bare word - something I've also not seen defined.
Anyway, there's always something to learn here :)