在研究语言Prolog时,我发现了以下真或假的问题:
在Prolog
?- X is X+1中,变量的增量为X1.
老师说这是假的,但我不明白为什么.会不会X是X+1从现在开始?为什么这是假的?
Prolog不适用于可以改变值的元素之类的变量.变量是当前没有值的元素,一旦它具有值,它就不能改变该值(除了撤消统一的回溯).
如果X已经有一个值,X+1将计算,但你不能统一 3用4:
?- X=3, X is X+1.
false.
Run Code Online (Sandbox Code Playgroud)
如果此时X没有接地,is谓词将失败:
?- X is X+1.
ERROR: is/2: Arguments are not sufficiently instantiated
Run Code Online (Sandbox Code Playgroud)
这个问题可能想要证明命令式编程和逻辑编程之间的基本区别之一:在命令式编程中,变量可以被赋予(新)值,在逻辑编程中,变量只能接地一次(回溯除外).完全接地后,您无法以不同方式接地.