3
在學習序言我發現下面的真或假的問題語言:的具體含義 - X是X + 1
在Prolog
?- X is X+1
導致變量X
的一個增量。
老師說這是假的,但我不明白爲什麼。從現在開始不會X
是X+1
?爲什麼它是假的?
在學習序言我發現下面的真或假的問題語言:的具體含義 - X是X + 1
在Prolog
?- X is X+1
導致變量X
的一個增量。
老師說這是假的,但我不明白爲什麼。從現在開始不會X
是X+1
?爲什麼它是假的?
Prolog不能與變量一樣可以改變值的元素。變量是一個當前沒有值的元素,一旦它有一個值,它就不能改變該值(除了統一消除的回溯)。
如果X
已具有一定的價值,X+1
將被計算,但你不能統一3
與4
:
?- X=3, X is X+1.
false.
如果X
是在那一刻不接地時,is
謂詞將失敗:
?- X is X+1.
ERROR: is/2: Arguments are not sufficiently instantiated
這個問題可能要證明一個根本的區別在命令式編程和邏輯式編程之間:在命令式編程中一個變量可以是分配給一個(新)值,邏輯編程中一個變量只能用接地一次(回溯除外)。一旦完全接地,你不能以地面它不同的方式。
在Prolog中,「X是X + 1」表示「X」與「X + 1」具有相同的值,這顯然是錯誤的。與其他語言不同,它不是'X'的新任務。一旦「X」的值已經確定,除非通過回溯,否則不能更改。 – lurker