2012-10-16 109 views
10

我只是不知道如何打印X的值。以下是我在頂層嘗試:prolog - 打印一個變量的值

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

60 ?- write(X). 
_G253 
true. 

什麼是_G253?我不想要索引號,我想要X值綁定。 我應該怎麼做才能打印X的值?

+0

可能重複(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

prolog - 作爲輸入並打印變量的值。

go:- write('Enter a name'),nl, 
    read(Name),nl, 
    print(Name). 
print(Name):- write(Name),write(', Hello !!!'). 
的[在SWI Prolog的變量名]