Annexe A Différences Prolog II+ / Norme. PrologIA HERITAGE II+
A!ociation
Prolog
HERITAGE
Annexe A
Différences Prolog II+ / Norme
A.1 Niveau général
A.2 Fonctionalités non implantées
A.3 Fonctionalités restreintes
A.1 Niveau général
Portée de la coupure dans un méta-appel
En Prolog II+, la coupure dans un méta-appel a une portée supérieure à celle définie dans la normalisation. Ce qui signifie que l'on a par exemple les différences de fonctionnement suivantes par rapport à la norme:
?- insert.
a(1).
a(2).
.
?- call( (Z=!, a(X), Z) ).
{Z=!,X=1} /* 1 seule solution au lieu de 2 */
Les chaînes de caractères
En Prolog II+, une option supplémentaire par rapport à celles définies par la norme permet de classer un texte "entre doubles quotes" dans un type à part entière qui est le type "chaînes de caractères". Cette option est celle en vigueur par défaut au lancement de Prolog.
Préfixage des identificateurs
En Prolog II+, les identificateurs lus se voient toujours attribuer un préfixe en fonction du contexte courant, qu'ils se trouvent en position d'argument (foncteurs) ou bien en position de but (tête ou queue de règle). Néanmoins, nous fournissons la possibilité d'attribuer automatiquement le préfixe vide ("") aux identificateurs non préfixés, en position d'argument. Il suffit pour cela de démarrer Prolog avec l'option
"-f a0".
Par exemple, dans ce mode là, la lecture de call(nl) fera appel à une règle sans doute non définie (:nl), tandis que call(sys:nl) imprimera bien un saut de ligne.
Pour annuler cette possibilité, exécuter le prédicat:
?- set_options("a1").
©PrologIA
A - 2
Annexe A
Vue logique et vue immédiate
Dans le mécanisme de la modification dynamique d'un paquet de règles (assert,
retract, suppress), la norme définit la vue dite "logique", c'est à dire que tout se passe comme si l'exécution d'un paquet de règles se faisait sur une copie de celui-ci, donc indépendamment des modifications éventuelles subites lors de cette exécution.
Une autre vue possible est celle dite "immédiate", qui consiste à prendre immédiatement en considération toute modification d'un paquet.
La vue de Prolog II+ est la vue immédiate.
Les seuls cas où le comportement peut être différent d'une prise en compte immédiate sont ceux de la suppression d'une règle dans un paquet où il reste encore des alternatives à exécuter. L'énumération de tous les cas de figures est alors assez complexe: cela dépend du fait qu'il y ait ou pas une indexation sur le paquet de règles en question, de la position de la règle modifiée par rapport à la règle du même paquet en cours d'exécution, du type du premier argument du but (variable, constante, ...).
Les n-uplets
Le type n-uplet n'est pas défini dans la norme Prolog. En termes d'équivalence, nous pouvons dire que le terme f(a1, a2, ..., an) où f est un atome, est équivalent au nuplet<>(f, a1, a2, ..., an), sauf dans le cas où n=0 (f n'est pas équivalent à <>(f) ).
A!ociation
Prolog
HERITAGE
A.2 Fonctionalités non implantées
Les directives char_conversion/2 et current_char_conversion/2 ne sont pas implantées.
A.3 Fonctionalités restreintes
La directive multifile/1 est équivalente à la directive discontiguous/1, la notion de fichier n'étant pas prise en compte par la compilation.
Seule la valeur :off est prise en compte pour le second paramètre de la directive de compilation et primitive set_prolog_flag/2 dans le cas où le premier vaut
:char_conversion.
©PrologIA

Link público atualizado
O link público para o seu chat foi atualizado.