Este es un problema frecuente en SWI. Por "abc" por defecto es una lista de códigos de caracteres, por lo que se imprime como:
?- Xs = "abc".
Xs = [97, 98, 99].
¿Se puede convertir de nuevo con facilidad? Imagine que tiene una lista de distancias que suceden como 97, 98 y 99. En ese caso, una cadena sería muy engañosa como respuesta. Por lo tanto, no existe una solución clara para su problema, ¡siempre que la notación de cadena signifique códigos de lista de caracteres!
Se puede cambiar el significado de "abc" a una lista de caracteres que son átomos de longitud 1:
?- set_prolog_flag(double_quotes,chars).
true.
?- Xs = "abc".
Xs = [a, b, c].
Si está satisfecho con ella se puede utilizar library(double_quotes)
.
?- use_module(library(double_quotes)).
true.
?- Xs = "abc".
Xs = "abc".
Para más información, consulte this thread.
(debería haber dicho ... la primera lista contiene cadenas, los segundos átomos) – magus