2010-12-04 5 views
2

Je veux ajouter peu d'informations au début du programme et je va comme ceci. Comment écrire une citation simple (') dans un prédicat d'écriture dans Prolog?

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

Et cela est bien beau ... mais je dois écrire (» - résoudre (« Entrée1 », « Input2 » , Output3) '), nl donc quand je lance le programme, il devrait imprimer Pour démarrer le type - solve (' Entrée1 ', ' Input2 ', Output3)

grâce à avancer :)

+0

Que doit-il afficher exactement? Veuillez utiliser quatre espaces principaux pour mettre en forme des extraits de code. –

Répondre

4

Échapper à la citation avec barre oblique inverse.

Par exemple, pour produire un seul guillemets simples:

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

En règle générale, vous devez bien sûr éviter les effets secondairesentièrement. Une bonne solution est de décrire la sortie en utilisant un   DCG. Cela le rend sensible aux cas de test , qui sont difficiles à écrire si la sortie n'apparaît que sur le terminal.

write/1 est particulièrement rarement utilisé. Si vous avez vraiment besoin de sortir quelque chose, utilisez format/2. Cela semble effrayant si vous connaissez   DOS, mais ce n'est vraiment pas.

Un avantage important de format/2 est qu'il vous permet de mesh facilement du texte statique avec des arguments flexibles, par exemple:

 
?- member(X, [friend,foe,love]), 
format("hello my '~q'!\n", [X]), 
    false. 

Cédant:

 
hello my 'friend'! 
hello my 'foe'! 
hello my 'love'! 

Notez que la question des guillemets simples n » ai pas même surgir dans ce cas. La question analogue à " peut à nouveau être résolu en utilisant \:

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