. Как написать одиночную цитату (') в пишете предикату в прологе?
Вопрос
Я хочу добавить короткую информацию в начале программы, и я идет так
message :-
nl,nl,
write(' To start type '), nl,
write(' ?- solve(Input1,Input2,Output3) '), nl.
:- message.
И это нормально ... но мне нужно написать ('? - решить (' input1 ',' input2 ', вывод3)'), nl, поэтому, когда я запускаю программу, она должна печатать, чтобы начать тип? - Решить (' Вход1. ' ,' Вход2. ' , Вывод3)
заранее спасибо :)
Решение
Избежать цитаты с обратная черта.
Например, выводить Один Single-quote:
?- write('\'').
'
true.
Как правило, вы должны конечно Избегайте побочных эффектов полностью. Отказ Хорошее решение - описывать вывод с использованием DCG. Это делает его подданным тестовые случаи, которые трудно написать, если вывод появляется только на терминале.
write/1
особенно редко используется. Если вам действительно нужно что-то выводить, используйте format/2
. Отказ Это звучит страшно, если вы знаете DOS, но это действительно нет.
Важное преимущество format/2
Это то, что он позволяет вам удобно сетки статического текста с гибкими аргументами, например:
? - член (х, [друг, враг, любовь]), Формат («Привет мой» ~ Q '! N ", [x]), ложный.
Урожайность:
Здравствуй, друг'! Привет мой «враг»! Привет, любовь моя'!
Обратите внимание, что проблема одинарных цитат даже не возникла в этом случае. Аналогичная проблема с "
можно снова решить с помощью \
:
? - Формат («A » тест "", []).тест"