Предположим, у меня есть следующие правила:
unify('test', 'this is a test').
run :- write('Enter something: '),
read(X),
unify(X, Y),
write('The answer is '), write(Y).
И затем я запускаю его следующим образом:
?- ['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.
Почему SWI-Prolog объединяет test и 'test' в unify('test', 'this is a test').? Я столкнулся с этим, отвечая на вопрос о Prolog на SO. Хотя я мог ответить на вопрос человека, я не мог объяснить это конкретное поведение, и мне было интересно, сможет ли кто-нибудь еще.