Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: arithmetic operator precedence
- X-seq: zsh-workers 25220
- From: Stephane Chazelas <Stephane_Chazelas@xxxxxxxx>
- To: Mikael Magnusson <mikachu@xxxxxxxxx>
- Subject: Re: arithmetic operator precedence
- Date: Thu, 19 Jun 2008 17:27:18 +0100
- Cc: zsh-workers@xxxxxxxxxx
- In-reply-to: <237967ef0806190910q70c0d0d7y2466938b547a8ee4@xxxxxxxxxxxxxx>
- Mail-followup-to: Mikael Magnusson <mikachu@xxxxxxxxx>, zsh-workers@xxxxxxxxxx
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <2d460de70806170324o5a44609x9383cc2445d67dd6@xxxxxxxxxxxxxx> <20080617103829.GD5016@xxxxxxxxxxxxxxx> <20080617114340.398c731f@news01> <20080617112815.GF10734@xxxxxxxxxxxxxxxxxxx> <200806171146.m5HBkhfR013230@xxxxxxxxxxxxxx> <a0600102dc47fd2c6184e@xxxxxxxxxxxxxxxxx> <200806190958.m5J9w7BJ006695@xxxxxxxxxxxxxx> <2d460de70806190529p1255b8b5mfe2fb2c1e1d7ba35@xxxxxxxxxxxxxx> <20080619160433.GL10734@xxxxxxxxxxxxxxxxxxx> <237967ef0806190910q70c0d0d7y2466938b547a8ee4@xxxxxxxxxxxxxx>
On Thu, Jun 19, 2008 at 06:10:56PM +0200, Mikael Magnusson wrote:
> 2008/6/19 Vincent Lefevre <vincent@xxxxxxxxxx>:
> > On 2008-06-19 14:29:03 +0200, Richard Hartmann wrote:
> >> On Thu, Jun 19, 2008 at 11:58, Peter Stephenson <pws@xxxxxxx> wrote:
> >> > That seems a good idea in any case.
> >>
> >> Can you add that this is done to remain both backwards and shell-
> >> compatible and that this is not what a 'real' language/calculator
> >> will do?
> >
> > This isn't shell-compatible. AFAIK, only bash and ksh93 support **.
> >
> >> Perhaps even include a reference to the POSIX argument.
> >
> > There's no POSIX argument. ** is just an extension.
>
> I've followed this discussion, and I'm left wondering only one thing.
> If it's decided that $(( -1 ** 2 )) == 1, then what's the point? Why
> would anyone ever write that? Why require everyone to write -(1**2) when
> the expression makes no sense at all without the parentheses? Ie you would
> just write 1**2 without the - at all, nobody would ever write (-1)**2.
[...]
Think of:
double() {
REPLY=$(($1 * 2))
}
square() {
REPLY=$(($1 ** 2))
}
Where those functions are meant to be passed a number, positive
or negative, not any random arithmetic expression.
If you make ** have higher precedence than unary "-", then
square -1
returns -1
while double -1 returns -2 as expected.
--
Stéphane
Messages sorted by:
Reverse Date,
Date,
Thread,
Author