Przyjmijmy, mam następujące zasady:Dlaczego SWI-Prolog ujednolica cytowany i niecytowany ciąg (bez spacji) do tej samej reguły?
unify('test', 'this is a test').
run :- write('Enter something: '),
read(X),
unify(X, Y),
write('The answer is '), write(Y).
I wtedy go uruchomić w następujący sposób:
?- ['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.
Dlaczego SWI-Prolog ujednolicić zarówno test
i 'test'
do unify('test', 'this is a test').
? Natknąłem się na to, odpowiadając na pytanie Prologa na temat SO. Chociaż byłem w stanie odpowiedzieć na pytanie danej osoby, nie mogłem wyjaśnić tego konkretnego zachowania i zastanawiałem się, czy ktokolwiek inny mógłby to zrobić.
Ach, to ten SWI-Prolog specyficzne zachowanie? –
@Vivin Paliath: Być może, przynajmniej z SWI-PROLOG, chociaż wydaje się to typowe dla innych wdrożeń PROLOGa, które również widziałem. Niemniej jednak, tak, to jest coś, co zrobi w szczególności parser SWI-PROLOG, może tylko po to, by uchronić cię przed pojedynczym cytowaniem wszystkich twoich atomów :-) – sharky