Prolog - печатать значение переменной

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

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

60 ?- write(X).
_G253
true.

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

Ответ 1

Когда вы вводите 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.

Ответ 2

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

go:- write('Enter a name'),nl,
  read(Name),nl,
  print(Name).
print(Name):- write(Name),write(', Hello !!!').