Supongamos que tengo las siguientes reglas:¿Por qué SWI-Prolog unifica una cadena entre comillas y sin comillas (sin espacios) para la misma regla?
unify('test', 'this is a test').
run :- write('Enter something: '),
read(X),
unify(X, Y),
write('The answer is '), write(Y).
Y luego lo ejecuto de la siguiente manera:
?- ['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.
¿Por qué SWI-Prolog unificar tanto test
y 'test'
-unify('test', 'this is a test').
? Me encontré con esto al responder una pregunta de Prolog en SO. Si bien pude responder la pregunta de la persona, no pude explicar este comportamiento en particular y me preguntaba si alguien más podría hacerlo.
Ah, este comportamiento es SWI-Prolog-específico? –
@Vivin Paliath: Tal vez, al menos con SWI-PROLOG, aunque parece típico de otras implementaciones de PROLOG que he visto también. Pero, sin embargo, sí, es algo que el analizador SWI-PROLOG hará en particular, tal vez solo para evitar que tenga que citar todos sus átomos :-) – sharky