2013-04-14 17 views

回答

4

很好,有輸入和輸出參數之間differencies,但讓我們用一個例子:

?- length([1, 2, 3], 3). 
true. 

這裏,我們的論點是所有輸入和謂語被用作測試。

?- length([1, 2, 3], L). 
L = 3. 

這裏我們的論點是+,-。謂詞被用作列表長度計算器。

?- length(X, 3). 
X = [_A, _B, _C]. 

這裏,我們的論點是-+。謂詞用作列表框架生成器。

?- length(X, L). 
X = [], L = 0; 
X = [_A], L = 1; 
X = [_A, _B], L = 2; 
% etc, infinite. 

這裏我們的論點是-,-。謂詞用作更大或更大長度列表的生成器。

所以length/2在輸入和輸出參數之間並沒有什麼區別,它只根據調用的方式而有不同的用途。

在另一方面:

?- X is 3 + 2. 
X = 5. 

作品,而

?- 5 is A + 2. 

拋出一個實例不足參數錯誤...如果你想想看,這是很正常的,因爲給一個答案在所有情況下,is/2將不得不是一個相當先進的求解器...

我希望這些例子將幫助你使不同類型之間的區別o f參數。

+0

非常感謝你:) – Anu