Prolog -X是X+;1.
在学习语言序言时,我发现了以下正确或错误的问题: 在PrologProlog -X是X+;1.,prolog,Prolog,在学习语言序言时,我发现了以下正确或错误的问题: 在Prolog?-X是X+1导致变量X增加1 一位老师说这是假的,但我不明白为什么。从现在起,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: Ar
?-X是X+1
导致变量X
增加1
一位老师说这是假的,但我不明白为什么。从现在起,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
这个问题可能想说明命令式编程和逻辑编程之间的一个基本区别:在命令式编程中,变量可以被分配一个(新)值,在逻辑编程中,变量只能固定一次(回溯除外)。一旦完全接地,就不能以不同的方式接地。在序言中
X是X+1
表示X
与X+1
具有相同的值,这显然是错误的。与其他语言不同,这不是新的X
赋值。一旦确定X
的值,除非通过回溯,否则无法更改该值。