1
序言定義中的輸入/輸出參數是否有區別?這與計劃和C等其他語言相比如何?序言定義中的輸入/輸出參數
序言定義中的輸入/輸出參數是否有區別?這與計劃和C等其他語言相比如何?序言定義中的輸入/輸出參數
很好,有輸入和輸出參數之間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參數。
非常感謝你:) – Anu