| 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.