2013-03-03 3 views
2

Я новичок в программировании в прологе.Изменить ответный ответ Prolog

Я хочу изменить значение, возвращаемое программой пролога, чтобы оно возвращало true/false вместо стандартного да или нет.

Рассмотрите очень простой пример: E.g. simple.P

node(1). 

isNode(X) : node(X) 

на прологе командной строке, если я типа isNode (1) он возвращается с да как:

isNode(1). 

yes 

Мой вопрос:

Как изменить это от да, правда?

+0

Строго говоря, это не та часть, которую вы контролируете своей программой, а пользовательский интерфейс системы Prolog, которую вы используете. Такой интерфейс, который часто называют «REPL» (Read, Eval, Print, Loop) или чаще «консоль», это более простой способ позволить программисту контролировать «внутреннюю работу» Prolog. Как программист, вы должны определить * свой * собственный интерфейс для своей программы, таким образом отвечая на истинный/ложный или любой другой, который, по вашему мнению, лучше подходит для ввода пользователем. – CapelliC

+0

Это будет зависеть от диалекта Prolog, который вы используете. Например, SWI Prolog иногда ничего не сообщает, иногда он говорит «true». –

+0

@AlexanderSerebrenik: Когда SWI ничего не сообщает? Насколько я понимаю, он всегда дает ответ. – false

ответ

1

Пролог пытается найти доказательство вашего запроса. Если ваш запрос имеет переменные, он печатает значение, которое делает их истинными.

В: Существуют ли какие-либо простые числа? A: Да - 2 является четным и простым

Он будет давать вам больше доказательств, пока вы печатаете; В конце концов это закончится, и ответьте false.

В: Существуют ли какие-либо простые числа? A: Да - 2 четное и простое Q: Есть ли еще? A: false.

Что вы хотите для вашей программы для выполнения вывода. Для этого существует ряд предикатов библиотеки. Наиболее гибким является формат/2

myprogram :- 
    my_old_program, !, 
    format('yup, that sure is right!~n', []). 
myprogram :- 
    format('nope, nope, no way in heck!~n', []). 
Смежные вопросы