Это не специфичное для SWI поведение - это требуется стандартом.Есть простой способ увидеть это.Вы можете использовать это также для любого другого термина, синтаксис которого не очевиден.Либо введите на верхнем уровне:
?- X = 'test'.
X = test.
?- X = 'this is a test'.
X = 'this is a test'.
Ответ всегда действителен для текста Prolog - это относится только к SWI, но также и ко многим другим системам Prolog, таким как YAP, GNU, B, IF, SICStus.
Другой способ увидеть это - использовать write_canonical / 1:
?- write_canonical('this is a test').
'this is a test'
true.
?- write_canonical([a,b,(c,d),{e,f}]).
'.'(a,'.'(b,'.'(','(c,d),'.'({}(','(e,f)),[]))))