zsh-workers
 help / color / mirror / code / Atom feed
From: Stephane Chazelas <stephane.chazelas@gmail.com>
To: Daniel Shahaf <d.s@daniel.shahaf.name>
Cc: zsh-workers@zsh.org
Subject: Re: inf and nan in arithmetic expansions
Date: Thu, 8 Feb 2018 14:22:11 +0000	[thread overview]
Message-ID: <20180208142211.GA14888@chaz.gmail.com> (raw)
In-Reply-To: <1518093995.645366.1263935336.265ED7BF@webmail.messagingengine.com>

2018-02-08 12:46:35 +0000, Daniel Shahaf:
[...]
> Why do we generate "inf." with a period in the first place?  I know of
> no other tool that does this.  Shouldn't we generate "inf" and "nan"
> with no period?
[...]

The idea is that we add "." for floats that don't already have
one and don't have a e/E to make sure they stay floats when used
again in an arithmetic expression. That causes all sorts of
problems with yash and ksh93 which don't do that. See
https://unix.stackexchange.com/a/422123 for a few examples.

It just looks like "inf" and "nan" were overlooked. Whether we
output "inf", "Inf" or "inf.", we'd also want to make sure
they're recognised on input.

> 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? 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)
but just make inf/nan readonly so users not be tempted to use
them as variables?

I'd also rather "inf" be used instead of "inf." (would also
align with ksh93), but the change could potentially break some
scripts. If we also make $inf/$nan read-only variables, that
would  also break scripts that use $inf/$nan variables but not
in arithmetic contexts (like for inf in *.inf), so that doesn't
sound like a good idea to me.

-- 
Stephane


  reply	other threads:[~2018-02-08 14:22 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-07 22:30 Stephane Chazelas
2018-02-07 23:25 ` Oliver Kiddle
2018-02-08  9:38   ` Peter Stephenson
2018-02-08 12:46   ` Daniel Shahaf
2018-02-08 14:22     ` Stephane Chazelas [this message]
2018-02-09 15:31       ` Daniel Shahaf
2018-02-09 21:09         ` Stephane Chazelas
2018-02-10  0:10           ` Bart Schaefer
2018-02-16 16:51     ` Oliver Kiddle
2018-02-17  0:38       ` Daniel Shahaf
2018-02-19 14:19         ` Stephane Chazelas
2018-02-27 13:02       ` Vincent Lefevre
2018-02-27 15:25         ` Oliver Kiddle
2018-02-27 16:56           ` Vincent Lefevre
2018-03-21 23:46       ` Oliver Kiddle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180208142211.GA14888@chaz.gmail.com \
    --to=stephane.chazelas@gmail.com \
    --cc=d.s@daniel.shahaf.name \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).