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