*X-seq*: zsh-workers 42356*From*: Stephane Chazelas <stephane.chazelas@xxxxxxxxx>*To*: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>*Subject*: Re: inf and nan in arithmetic expansions*Date*: Fri, 9 Feb 2018 21:09:48 +0000*Cc*: zsh-workers@xxxxxxx*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=a9DFhvjNvwYXkbV4fyI6jNwcNNA9zV5zWCSpdJcNs+I=; b=IDxnv7jkwWBANk4W98eXwOgIQbR+e7FuwFqWwPM0L9Tqr+FwDA6CvORd2q/3cU7oT0 Fr9Rk8bJ6KORYSlaIRFIRrerAjpxkztk3XWmM8F4/T3FBGVmMbK4MVrjfI3D1J+SP0v4 FCjHa6C7MhQWGzaKMOjCJZny05zZvHuWhDBD7KuAx89086eB9gIqT947YVAYe1LtBz3T F7ZenquxfleP2OUF37dLUoxIZW39bxHIbX01t0hZMf/9/5l3MYXb7E73XwZ9QHfTVEAN pUVFEWjNh+p0gCJM7mNRZLqrpimPNdNBIgHpdK0R9Y8ir0Nqpb0aQP8OznMcTAYLclcG d5Hw==*In-reply-to*: <1518190272.2338601.1265377152.605E16CD@webmail.messagingengine.com>*List-help*: <mailto:zsh-workers-help@zsh.org>*List-id*: Zsh Workers List <zsh-workers.zsh.org>*List-post*: <mailto:zsh-workers@zsh.org>*List-unsubscribe*: <mailto:zsh-workers-unsubscribe@zsh.org>*Mail-followup-to*: Daniel Shahaf <d.s@xxxxxxxxxxxxxxxxxx>, zsh-workers@xxxxxxx*Mailing-list*: contact zsh-workers-help@xxxxxxx; run by ezmlm*References*: <20180207223051.GA30393@chaz.gmail.com> <4253.1518045946@thecus.kiddle.eu> <1518093995.645366.1263935336.265ED7BF@webmail.messagingengine.com> <20180208142211.GA14888@chaz.gmail.com> <1518190272.2338601.1265377152.605E16CD@webmail.messagingengine.com>

2018-02-09 15:31:12 +0000, Daniel Shahaf: > Stephane Chazelas wrote on Thu, 08 Feb 2018 14:22 +0000: > > 2018-02-08 12:46:35 +0000, Daniel Shahaf: > > > And then we could add 'inf' and 'nan' as readonly variables initialised to > > > those respective values (as Oliver also suggests in the 19597 thread). There > > > are compatibility implications for scripts that use these variable names, but > > > there is no way around them if we want to allow explicitly doing (( x = inf )) > > > in user code... > > > > But what value would you use for those variables? > > 'inf' would be positive infinity. 'nan' would be a NaN (whichever flavour > thereof would be least surprising). > > > Or do you mean that the shell arithmetic parser would understand > > "inf"/"nan" as the infinity and not-a-number numbers and not as the > > variable (otherwise with inf=inf, that would do infinite recursion) > > Why would it be recursive? I mean as in: $ inf=inf zsh -c 'echo $((inf))' zsh:1: math recursion limit exceeded: inf a variable name in arithmetic expression is expanded and its value subject to arithmetic evaluation and so on. There's always the option of defining them as: $ nan='(-(1e9999/1e9999))' inf='(1e9999)' zsh -c 'echo $((nan)) $((inf))' nan. inf. (I don't know why I need the "-" there, it's the same in ksh93) > > > but just make inf/nan readonly so users not be tempted to use them as > > variables? > > That would be the simplest implementation, yes. It might suffice, or we might > prefer something more elaborate. I'm not sure I see the benefit of preventing users using from using variables called "inf" or "nan". It seems to me that ksh93's approach at just treating "inf" and "nan" as literral constants representing their value like in C would be enough (which would in effect prevent users from using variables by the same name inside but not outside arithmetic expression (though they'd still be able to do $(($inf)))). -- Stephane

**Follow-Ups**:**Re: inf and nan in arithmetic expansions***From:*Bart Schaefer

**References**:**inf and nan in arithmetic expansions***From:*Stephane Chazelas

**Re: inf and nan in arithmetic expansions***From:*Oliver Kiddle

**Re: inf and nan in arithmetic expansions***From:*Daniel Shahaf

**Re: inf and nan in arithmetic expansions***From:*Stephane Chazelas

**Re: inf and nan in arithmetic expansions***From:*Daniel Shahaf

Messages sorted by: Reverse Date, Date, Thread, Author