Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.prolog > #14515
| From | Mild Shock <janburse@fastmail.fm> |
|---|---|
| Newsgroups | comp.lang.prolog |
| Subject | prolog_file_name/2 was a big mistake [Novacore] |
| Date | 2025-05-25 09:22 +0200 |
| Message-ID | <100uget$8qmr$1@solani.org> (permalink) |
| References | <vrkadh$7arh$1@solani.org> <vrkanf$7b21$1@solani.org> |
Hi, The GNU Prolog specification of prolog_file_name/2 was a big mistake. It reads as follows: prolog_file_name(File1, File2) unifies File2 with the Prolog file name associated with File1. More precisely File2 is computed as follows: - if File1 has a suffix or if it is user then File2 is unified with File1. - else if the file whose name is File1 + ’.pl’ exists then File2 is unified with this name. - else if the file whose name is File1 + ’.pro’ exists then File2 is unified with this name. - else if the file whose name is File1 + ’.prolog’ exists then File2 is unified with this name. - else File2 is unified with the name File1 + ’.pl’. This predicate uses absolute_file_name/2 to check the existence of a file (section 8.26.1). http://www.gprolog.org/manual/html_node/gprolog050.html#hevea_default836 It was adopted by SWI-Prolog and made parameterizable through absolute_file_name/3: https://www.swi-prolog.org/pldoc/doc_for?object=absolute_file_name/3 The big mistake is the existence check. In a web context it requires a server rountrip or something. And since there are 3 existence checks, its 3 server rountrips possibly HEAD requests. Formerly Jekejeke Prolog suffered from this problem. Now with Dogelog Player and as part of Novacore we wanted to do something else. What is the solution? Bye Mild Shock schrieb: > 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. >
Back to comp.lang.prolog | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Noacore is a Prolog profile that explores various relaxations Mild Shock <janburse@fastmail.fm> - 2025-03-21 19:16 +0100
What about allowing numbers 1e19, etc.. (Re: Novacore is a Prolog profile that explores various relaxations) Mild Shock <janburse@fastmail.fm> - 2025-03-21 19:21 +0100
Re: What about allowing numbers 1e19, etc.. (Re: Novacore is a Prolog profile that explores various relaxations) Mild Shock <janburse@fastmail.fm> - 2025-03-21 19:29 +0100
prolog_file_name/2 was a big mistake [Novacore] Mild Shock <janburse@fastmail.fm> - 2025-05-25 09:22 +0200
The recent extension/1 addition in Dogelog Player (Was: prolog_file_name/2 was a big mistake [Novacore]) Mild Shock <janburse@fastmail.fm> - 2025-05-25 09:33 +0200
Corr.: Typo (Was: The recent extension/1 addition in Dogelog Player) Mild Shock <janburse@fastmail.fm> - 2025-05-25 09:39 +0200
How difficult is a Knowledbase notion? (Was: Novacore is a Prolog profile that explores various relaxations) Mild Shock <janburse@fastmail.fm> - 2025-07-02 09:33 +0200
C++ programming or a PhD in Macro defs (Was: How difficult is a Knowledbase notion?) Mild Shock <janburse@fastmail.fm> - 2025-07-02 09:35 +0200
Workers never had the blessing of Paul Tarau [Prolog missed Web 2.0] (Was: C++ programming or a PhD in Macro defs) Mild Shock <janburse@fastmail.fm> - 2025-07-02 09:49 +0200
General Magic didn't predict the Future (Was: Workers never had the blessing of Paul Tarau [Prolog missed Web 2.0]) Mild Shock <janburse@fastmail.fm> - 2025-07-02 10:07 +0200
Antique Programming Style versus Modern Programming Style [SWI-Prolog] (Was: Workers never had the blessing of Paul Tarau [Prolog missed Web 2.0]) Mild Shock <janburse@fastmail.fm> - 2025-07-02 15:54 +0200
Grand mothers kitchen is nevertheless the best, who knows? (Was: Antique Programming Style versus Modern Programming Style [SWI-Prolog]) Mild Shock <janburse@fastmail.fm> - 2025-07-02 16:06 +0200
csiph-web