From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10112 invoked from network); 3 May 2001 08:24:55 -0000 Received: from sunsite.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 3 May 2001 08:24:55 -0000 Received: (qmail 8045 invoked by alias); 3 May 2001 08:24:46 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 14215 Received: (qmail 7987 invoked from network); 3 May 2001 08:24:45 -0000 Message-ID: To: zsh-workers@sunsite.dk (Zsh hackers list) Subject: Re: do I win the "most pointless use of ZSH" award? ;) In-Reply-To: Your message of "Wed, 02 May 2001 15:56:51 PDT." <010502155651.ZM16427@candle.brasslantern.com> Date: Thu, 03 May 2001 09:24:17 +0100 From: Peter Stephenson > > zsh% i=/foo; for ((i=0; i<10; i++)) echo $i > > zsh: bad math expression: operand expected at `/foo' > > > > Is this a bug or a feature that I'm entirely missing? > > It's a feature. The value of any parameter that appears in math context > is evaluated as an expression (up to a maximum recursion depth, I forget > what just now). So > > i=foo/bar > ((i)) > > is the same as > > ((foo/bar)) > > and so on for the values of `foo' and `bar'. But that's not what's happening here, it's assigning to i. Try i=/irrelevant (( i = 0 )) It never needs to know the original value of i. The problem is that the value, which is never used, is retrieved at the point where the identifier is identified. This is quite a serious bug because it means scalars can't reliably be used in arithmetic expressions at all. The fix is probably to mark the thing on the math stack as a parameter and retrieve it when we need the value. That doesn't look like a quick change. -- Peter Stephenson Software Engineer CSR Ltd., Unit 300, Science Park, Milton Road, Cambridge, CB4 0XL, UK Tel: +44 (0)1223 392070 ********************************************************************** The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. **********************************************************************