Giả sử tôi có các quy tắc sau:Tại sao SWI-Prolog hợp nhất một chuỗi trích dẫn và không được trích dẫn (không có dấu cách) cho cùng một quy tắc?
unify('test', 'this is a test').
run :- write('Enter something: '),
read(X),
unify(X, Y),
write('The answer is '), write(Y).
Và sau đó tôi chạy nó như sau:
?- ['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.
Tại sao SWI-Prolog thống nhất cả test
và 'test'
-unify('test', 'this is a test').
? Tôi đã xem xét điều này trong khi trả lời một câu hỏi Prolog trên SO. Trong khi tôi có thể trả lời câu hỏi của người đó, tôi không thể giải thích hành vi cụ thể này, và tôi đã tự hỏi liệu có ai khác có thể làm được không.
Ah, là hành vi SWI-Prolog cụ thể này? –
@Vivin Paliath: Có lẽ, ít nhất với SWI-PROLOG, mặc dù nó có vẻ điển hình của các triển khai PROLOG khác mà tôi đã thấy là tốt. Nhưng tuy nhiên, có, nó là một cái gì đó SWI-PROLOG phân tích cú pháp sẽ làm đặc biệt, có lẽ nếu chỉ để tiết kiệm cho bạn từ việc phải trích dẫn đơn tất cả các nguyên tử của bạn :-) – sharky