在研究Prolog语言时,我发现了以下真假问题:
在Prolog中
?- X is X+1
会导致变量X
增加一个。
老师说这是假的,但我不明白为什么。从现在开始,X
不会X+1
?为什么这是假的?
答案 0 :(得分:6)
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
这个问题可能想要证明命令式编程和逻辑编程之间的根本区别之一:在命令式编程中,变量可以分配一个(新)值,在逻辑编程中变量只能< em>接地一次(回溯除外)。完全接地后,您不能以不同方式接地
。