简体   繁体   中英

.how to write single quote( ' ) in write predicate in Prolog?

I want to add short info in the beginning of the program and i goes like this

message :-
    nl,nl,
    write('  To start type  '), nl,
    write(' ?- solve(Input1,Input2,Output3) '), nl.
:- message.

And this is fine...but i need write(' ?- solve('Input1','Input2',Output3) '), nl so when i run the program it should print To start type ?- solve( ' Input1 ' , ' Input2 ' ,Output3 )

thanks in advance :)

Escape the quote with backslash .

For example, to output a single single-quote:

?- write('\'').
'
true.

As a general rule, you should of course avoid side-effects entirely . A good solution is to describe the output using a DCG. This makes it amenable to test cases , which are hard to write if output only appears on the terminal.

write/1 is particularly rarely used. If you really need to output something, use format/2 . This sounds scary if you know DOS, but it really isn't.

An important advantage of format/2 is that it lets you conveniently mesh static text with flexible arguments, for example:

?- member(X, [friend,foe,love]),
,
   false.

Yielding:

Note that the issue of single quotes didn't even arise in this case. The analogous issue with " can again be solved by using \\ :

?- format("a \"test\"", []).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM