2011-06-20 21 views

回答

5

您正在獲取字符串的列表表示形式是,否和變量=值。

如果要實例化的條款是,否和變量=珍惜你應該將它們括單引號代替雙引號之間:

answer('Yes'). 
answer('No'). 
answer('Variable = value'). 

,如果你想用雙倍返還條款報價包括在內,你應該包括他們還與單引號括起來每學期:

answer('"Yes"'). 
answer('"No"'). 
answer('"Variable = value"'). 
2

你沒有做錯什麼。 [89, 101, 115]相同"Yes"

2 ?- [89, 101, 115] = "Yes". 
true. 

編輯:您可以使用this module做你想要什麼。

+0

我想你誤會我的意思。我想讓Prolog列出所有我給謂詞的值,因爲它們被寫成字符串......也就是'A =「是」,'A =「否」','A =「變量=值」 '。 – 2rs2ts

+2

如果您想要將字符代碼列表打印爲字符串,請參閱您的特定Prolog系統的'set_prolog_flag/2'文檔。 –

2

沒有什麼是錯在這裏,你剛纔看到的字符串的內部表示。 如果你想要一個更可讀的輸出嘗試其中之一:

(其中一些可能只在SWI-Prolog的工作,但你必須標記它作爲SWI,所以我認爲這是沒有問題的)

使用name/2從數字列表轉換爲原子:

?- name(X, "hallo"). 
X=hallo 

?- answer(X), name(Y, X). 
X = [89, 101, 115], 
Y = 'Yes' ; 

使用format/2進行輸出。

format('~s',["hallo"]). 
hallo 
true. 

?- answer(X), format('answer is "~s"',[X]). 
answer is "Yes" 
X = [89, 101, 115] ; 
answer is "No" 
X = [78, 111]. 

,或者,如果你不想使用真正的字符串(代碼點列表)使用單引號:

answer('yes'). 
answer('no'). 
answer('Variable = value'). 

?-answer(X). 
yes; 
… 
相關問題