Supposons que je les règles suivantes:Pourquoi SWI-Prolog unifie une chaîne entre guillemets et sans guillemets (sans espaces) à la même règle?
unify('test', 'this is a test').
run :- write('Enter something: '),
read(X),
unify(X, Y),
write('The answer is '), write(Y).
Et puis je le lance comme suit:
?- ['unify.pl'].
% unify.pl compiled 0.00 sec, -48 bytes
true.
?- run.
Enter something: test.
The answer is this is a test
true.
?- run.
Enter something: 'test'.
The answer is this is a test
true.
Pourquoi SWI-Prolog unifie les deux test
et 'test'
-unify('test', 'this is a test').
? Je suis tombé sur ceci tout en répondant à une question Prolog sur SO. Pendant que j'étais capable de répondre à la question de la personne, je ne pouvais pas expliquer ce comportement particulier, et je me demandais si quelqu'un d'autre pouvait le faire.
Ah, ce comportement est spécifique à SWI-Prolog? –
@Vivin Paliath: Peut-être, au moins avec SWI-PROLOG, bien que cela semble typique des autres implémentations PROLOG que j'ai vues. Mais néanmoins, oui, c'est quelque chose que l'analyseur SWI-PROLOG fera en particulier, peut-être seulement pour vous éviter de devoir citer tous vos atomes :-) – sharky