Deutsch   English   Français   Italiano  
<v8cjk1$j8js$1@solani.org>

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

Path: ...!npeer.as286.net!npeer-ng0.as286.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: DCG restrictions on the left-hand side [Novacore]
Date: Wed, 31 Jul 2024 07:55:14 +0200
Message-ID: <v8cjk1$j8js$1@solani.org>
References: <v8bc1u$indc$1@solani.org> <v8bc91$inkj$1@solani.org>
 <v8bccd$inkj$2@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 31 Jul 2024 05:55:14 -0000 (UTC)
Injection-Info: solani.org;
	logging-data="631420"; 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:Va7CtudKPIikaTFyaZ2WGD2NzsY=
X-User-ID: eJwNyNsBADEEBMCWCMspx+P0X0IynwMxtnY1mGKxclb/mUqJojft8IgVmuMrmVhGdti7UcmaItZY6i+PFfsFaRIV9g==
In-Reply-To: <v8bccd$inkj$2@solani.org>
Bytes: 2535
Lines: 64

Although SWI-Prolog implements a lot of checks.
It still allows this one:

?- a-->b.
ERROR: Unknown procedure: (-->)/2

?- assertz((a-->b)).
true.

?- a-->b.
true.

Scryer Prolog managed to prevent this, in that
the assertz/1 throws an error.

Think will finally adopt this behaviour to
prevent the end-user from accidentially

fiddling with (-->)/2.

Mild Shock schrieb:
> 
> This was discussed here:
> 
> Definite Clause Grammars Harmonization Proposal
> Last edit jschimpf? October 20, 2016, at 12:42 AM
> https://eclipseclp.org/wiki/Prolog/DCG
> 
> Not sure why Scryer Prolog doesn't implement it.
> 
> Mild Shock schrieb:
>>
>> In Novacore we are lucky, its a side effect of
>> phrase translating the head and a multi-file check:
>>
>> ?- [user].
>> p;q --> r.
>> Fehler: Kann Prädikat ;/2 nicht umdefinieren, nicht als Mehrdateien 
>> markiert.
>>
>> But might work out differently if a DCG is expanded
>> and asserted. Ok, its actually not so bad:
>>
>> ?- expand_term((p;q --> r), X), assertz(X).
>> Fehler: Kann Prädikat ;/2 nicht aktualisieren.
>>      user auf 1
>>
>>
>> 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'
>>
>