Избегайте цитаты с обратной косой чертой .
Например, для вывода одинарной одинарной кавычки:
?- write('\'').
'
true.
Как правило, вы должны, конечно, избегать побочных эффектов полностью . Хорошее решение - описать вывод с использованием DCG. Это делает его доступным для тестовых случаев , которые трудно записать, если вывод появляется только на терминале.
write/1
особенно редко используется. Если вам действительно нужно что-то вывести, используйте format/2
. Это звучит страшно, если вы знаете DOS, но на самом деле это не так.
Важным преимуществом format/2
является то, что он позволяет удобно комбинировать статический текст с гибкими аргументами, например:
?- member(X, [friend,foe,love]),
<b> format("hello my '~q'!\n", [X])</b>,
false.
Уступая:
<b>hello my 'friend'!
hello my 'foe'!
hello my 'love'!</b>
Обратите внимание, что проблема одинарных кавычек даже не возникла в этом случае. Аналогичная проблема с "
может быть снова решена с помощью \
:
?- format("a \"test\"", []).
<b>a "test"</b>