Liste des Groupes | Revenir à l prolog |
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'
Les messages affichés proviennent d'usenet.