2016-08-02 60 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