2016-08-02 99 views
-1

這個Prolog程序是做什麼的?我認爲它比較了兩個變量?當我讀到這條規則對我來說說mm2的關係,如果x有關y以下Prolog程序是做什麼的?

m(X, Y) :- 
    m2(X, Y, [ ]). 

m2([ ], X, X). 
m2([X|Y], [X, X|Z], W) :- 
    m2(Y, Z, W). 
+0

您是否嘗試過運行它?你有沒有遇到任何錯誤?你是否嘗試過顯示一些數據,因爲它通過這段代碼看它是如何改變的? –

回答

0

讓我們嘗試最普遍的查詢:

?- m(X,Y). 
X = Y, Y = [] ; 
X = [_G3566], 
Y = [_G3566, _G3566] ; 
X = [_G3566, _G3575], 
Y = [_G3566, _G3566, _G3575, _G3575] ; 
X = [_G3566, _G3575, _G3584], 
Y = [_G3566, _G3566, _G3575, _G3575, _G3584, _G3584] ; 
... 

所以,伊蘇似乎是簡單地Xs序列,每個元素加倍...

+0

我不知道,我試圖運行它,但當我鍵入m(X,Y)時仍然會出現錯誤和奇怪的情況。我得到X = Y,Y = []並等待提示 – James

+1

好的,在'等待提示'處回覆一個分號。什麼錯誤? – CapelliC