Re: Mathematica language issues
- To: mathgroup at smc.vnet.net
- Subject: [mg53002] Re: Mathematica language issues
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Sun, 19 Dec 2004 06:14:49 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
On 12/18/04 at 3:59 AM, ruebenko at imtek.uni-freiburg.de (Oliver
Ruebenkoenig) wrote:
>Dear Maxim,
>>All the typical issues with the Mathematica programming language
>>are still present in version 5.1:
>> Compile[{},
>> Module[{x = 0},
>> While[x++; EvenQ[x] ];
>> x
>> ]][]
>Compile[{}, Module[{x = 0}, x++; While[EvenQ[x]];
> x]][]
>x++; EvenQ[x] is CompoundExpression[ x++, EvenQ[ x ] ]
>While[ test ] needs a test not a CompoundExpression
The usual syntax of While is While[test, expr] but While[test] is also allowed and test can be a compound expression. The issue is clearly related to how Mathematica evaluates the compound expression.
Compile[{}, Module[{x = 0},
While[EvenQ[x], x++]; x]][]
outputs 1 as expected
Surprisingly,
Compile[{}, Module[{x = 0},
While[x++, EvenQ[x]]; x]][]
also outputs 1. I suspect if test becomes more complex, say a compound expression, deviating from the indicated syntax order won't continue to get the same result as using the expected order.
Note,
Compile[{}, Module[{x = 0},
While[x++; EvenQ[x]]; x]][]
outputs 2
This indicates EvenQ[x] is being evaluated with the current value of x rather than the updated value resulting from x++. However, I still don't understand why Maxim's original code outputs 3. But I also don't see an issue. I am never surprised by unexpected output when I deviate from expected syntax.
--
To reply via email subtract one hundred and four
- Follow-Ups:
- Re: Re: Mathematica language issues
- From: DrBob <drbob@bigfoot.com>
- Re: Re: Mathematica language issues