Deutsch   English   Français   Italiano  
<v98bpp$124d0$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: Re: post-N246 Read- and Write-Option variable_names/1 (Was: DCG
 restrictions on the left-hand side [Novacore])
Date: Sat, 10 Aug 2024 20:33:31 +0200
Message-ID: <v98bpp$124d0$1@solani.org>
References: <v8bc1u$indc$1@solani.org> <v98b1p$123qt$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 18:33:29 -0000 (UTC)
Injection-Info: solani.org;
	logging-data="1118624"; 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:SMN3Pl7iflW64u+skpIVG5EDqsc=
In-Reply-To: <v98b1p$123qt$1@solani.org>
X-User-ID: eJwNxMkBwCAMA7CVcG7GIQHvP0Krh1wDMWnhYU6n0roIWHYJHkVjKDmOrnktN5iCnF5TG+7Hbq83+c/DfT5ZfxZJ
Bytes: 3506
Lines: 80

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