. Как написать одиночную цитату (') в пишете предикату в прологе?

StackOverflow https://stackoverflow.com/questions/4353821

  •  08-10-2019
  •  | 
  •  

Вопрос

Я хочу добавить короткую информацию в начале программы, и я идет так

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 » тест  "", []).тест"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top