Deutsch   English   Français   Italiano  
<vrkanf$7b21$1@solani.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: Mild Shock <janburse@fastmail.fm>
Newsgroups: comp.lang.prolog
Subject: What about allowing numbers 1e19, etc.. (Re: Novacore is a Prolog
 profile that explores various relaxations)
Date: Fri, 21 Mar 2025 19:21:36 +0100
Message-ID: <vrkanf$7b21$1@solani.org>
References: <vrkadh$7arh$1@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 21 Mar 2025 18:21:35 -0000 (UTC)
Injection-Info: solani.org;
	logging-data="240705"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101
 Firefox/128.0 SeaMonkey/2.53.20
Cancel-Lock: sha1:IE49UF4fwQlc9o/+61+s2eM1IhY=
X-User-ID: eJwNzMERACEIBLCWgAXcK0dQ+i/hnPwTSM1enpEe8/TWSwujcblVDJw4rkdYy0TikzLRRhSmG8jE5iXlRUd+IkMUAA==
In-Reply-To: <vrkadh$7arh$1@solani.org>
Bytes: 2644
Lines: 72

Hi,

Somehow I have the feeling it doesn't make
sense to only recognize floating point numbers
as number literals that have a period in it.

Most programming languages I have encountered
also recognize floating point numbers when
they have an exponent e or E in it:

- Python:
 >>> 1e19
1e+19

- JavaScript:
 > 1e19
10000000000000000000

JavaScript is a little special. Since it has a
integer subset inside there floating point numbers.
Now I find that SWI-Prolog also allows 1e19:

/* SWI-Prolog 9.3.20 */
?- X = 1e19.
X = 1.0e+19.

I think this is a good idea. Since there is no
confusion. Most Prolog systems I checked never
alias an operator e with a number:

/* SWI-Prolog 9.3.20 */
?- op(500,yfx,e).
true.

?- X = 1 e 2.
X = 1 e 2.

Bye

Mild Shock schrieb:
> Interestingly a flag strict_iso could solve a few
> vexing problems. For example the ISO core standard
> did only mention floor/1 with signature F → I.
> 
> So in GNU Prolog I can do:
> 
> /* GNU Prolog 1.5.0 */
> 
> ?- current_prolog_flag(strict_iso, X).
> X = on
> yes
> 
> ?- X is floor(1).
> uncaught exception: error(type_error(float,1),(is)/2)
> 
> ?- set_prolog_flag(strict_iso, off).
> yes
> 
> ?- X is floor(1).
> X = 1
> yes
> 
> A few Prolog systems don’t share the above behavior,
> like SWI-Prolog for example doesn’t throw the type error.
> Also SWI-Prolog has nowhere a flag strict_iso.
> 
> Currently I have changed my Prolog system to tell me:
> 
> /* Dogelog Player 1.3.1 */
> 
> ?- current_prolog_flag(strict_iso, X).
> X = off.