Deutsch   English   Français   Italiano  
<v98o1s$12aq2$1@solani.org>

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

Path: ...!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: Is a PIP for Syntax extensions necessary? (Was; post-N246 Read- and
 Write-Option variable_names/1)
Date: Sun, 11 Aug 2024 00:02:38 +0200
Message-ID: <v98o1s$12aq2$1@solani.org>
References: <v8bc1u$indc$1@solani.org> <v98b1p$123qt$1@solani.org>
 <v98bpp$124d0$1@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 10 Aug 2024 22:02:36 -0000 (UTC)
Injection-Info: solani.org;
	logging-data="1125186"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Firefox/91.0 SeaMonkey/2.53.18.2
Cancel-Lock: sha1:R+iLYqyoGwiDq56phM/X+4u/79c=
X-User-ID: eJwFwYEBwDAEBMCVQvzTcRD2H6F3uBS2G0HDYqmPxmjPM3PHbSzK5Tx28cuvPLPbovNoil5dwbznukAh7Adb2BW/
In-Reply-To: <v98bpp$124d0$1@solani.org>
Bytes: 4456
Lines: 107

I have a question, does SWI-Prolog not anymore use
their dict syntax in the Janus interface:

 > import janus_swi as janus
 > janus.query_once("Y is X+1", {"X":1})
{'Y': 2, 'truth': True}

I don’t see _{...} anymore. When and how did this
happen? I was just thinking whether a Syntax
extension PIP is necessary. Such a PIP isn’t listed:

https://prolog-lang.org/ImplementersForum/PIPs.html

Is SWI-Prolog safe, against parsing problems,
when it still has block operators in the
background? Like can one mix and match

code that uses Janus interface with the
“new” dicts with other code that uses the
SWI-Prolog dicts based on _{...}

which we might now term the “old” dicts.
How do you access and manipulate the
“new” dicts, do the “old” operations work?

Mild Shock schrieb:
> Hi,
> 
> I recently introduce '$VAR'/1 detection in
> writing again. I have now a 100% Prolog written
> '$VAR'/1 capable output routine.
> 
> Somehow I found '$VAR'/1 usueful again, especially
> in connection with numbersvars/3 which is in
> library(compat) the two make a nice pair
> 
> of Swiss army knife for printing. What the
> routines don't do, they for example don't check
> variable_names/1 option for a cyclic list, so
> 
> I currently get:
> 
> /* Dogelog Player */
> ?- VN = ['U'=X,'V'=Y | VN], write_term(f(X,g(Y,X),Y), 
> [variable_names(VN)]), nl.
> %%% hangs or I wasn't wainting long enough
> 
> But then SWI-Prolog does something strange,
> but the error message is funny:
> 
> ?- VN = ['U'=X,'V'=Y | VN], write_term(f(X,g(Y,X),Y), 
> [variable_names(VN)]), nl.
> ERROR: Type error: `list' expected, found `'V'=V' (a compound)
> 
> Does the error message use the variable_names/1
> association list that is in prepaperation somehow,
> as a unintended side effect? Or what explains that
> 
> it shows 'V'=V' and not 'V'=Y'? And why does it
> complain about compound? And not say something about cyclic?
> This here works correctly:
> 
> ?- VN = ['U'=X,'V'=Y], write_term(f(X,g(Y,X),Y),
>     [variable_names(VN)]), nl.
> f(U,g(V,U),V)
> 
> Mild Shock schrieb:
>>
>> UWN is testing Prolog systems that don't exist anymore:
>>
>> Jekejeke 1.5.0
>> https://www.complang.tuwien.ac.at/ulrich/iso-prolog/variable_names#73
>>
>> a) There is no more publicitly available Jekejeke
>>     Prolog anymore, I think I wrote UWN already in the
>>     past about that.
>>
>> b) There is only Dogelog Player, which has a 100%
>>     Prolog written read/write predicates including
>>     the variable_name/1 option. Source code is here,
>>     you also find GIT access etc to the Prolog system:
>>
>> Quelltexte und Archive des Dogelog Spieler.
>> https://www.xlog.ch/izytab/doclet/docs/07_spec/02_dogelog.html
>>
>> c) There is an internal version of Jekejeke Prolog,
>>     which is way after 1.5.0, with version 1.7.0, but
>>     it also uses the Dogelog Payer 100% Prolog
>>     written read/write, so no need to test.
>>
>>
>> Mild Shock schrieb:
>>> Guess how many newer Prolog systems allow this here:
>>>
>>> ?- [user].
>>> p;q --> r.
>>>     true.
>>>
>>> On the other hand SWI-Prolog disallows it:
>>>
>>> ?- [user].
>>> p;q --> r.
>>>
>>> ERROR: user://1:29:
>>> ERROR:    No permission to define dcg_nonterminal `p;q'
>>
>