2012-10-16 2 views
10

Я просто не могу понять, как напечатать значение X. Вот что я пытался в верхнем уровне:пролог - распечатать значение переменной

59 ?- read(X). 
|: 2. 
X = 2. 

60 ?- write(X). 
_G253 
true. 

Что такое _G253? Я не хочу номер индекса, я хочу, чтобы значение X было связано. Что делать, чтобы напечатать значение X?

+0

возможно дубликат [Имена переменных в SWI Prolog] (http://stackoverflow.com/questions/9358623/variable-names-in-swi-prolog) – false

ответ

13

Когда вы вводите write(X). в интерактивном приглашении, и ничего больше, X не привязан ни к чему конкретно. Если вы хотите прочитать X от пользователя, а затем записать его, попробуйте ввести read(X), write(X). в командной строке.

?- read(X), write(X). 
|: 28. 
28 
X = 28. 

SWI Prolog сохраняет историю привязок верхнего уровня; введите help., чтобы перейти в руководство, затем найдите bindings или просто перейдите к разделу 2.8 руководства «Повторное использование привязок верхнего уровня». Там вы можете узнать, что последнее значение любой переменной, связанной с успешной целью верхнего уровня, сохраняется и может быть отнесено к использованию имени переменной с префиксом знака доллара. Так как взаимодействие следующие варианты:

?- read(X). 
|: 42. 
X = 42. 

?- write($X). 
42 
true. 

Но цель верхнего уровня, который как раз случается использовать имя переменной X будет интерпретироваться как использование новой переменной; иначе будет нарушена нормальная семантика Prolog.

0

пролог - принять за вход и распечатать значение переменной.

go:- write('Enter a name'),nl, 
    read(Name),nl, 
    print(Name). 
print(Name):- write(Name),write(', Hello !!!'). 
Смежные вопросы