在研究语言Prolog时,我发现了以下真或假的问题:
在Prolog
?- X is X+1
中,变量的增量为X
1.
老师说这是假的,但我不明白为什么.会不会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)
这个问题可能想要证明命令式编程和逻辑编程之间的基本区别之一:在命令式编程中,变量可以被赋予(新)值,在逻辑编程中,变量只能接地一次(回溯除外).完全接地后,您无法以不同方式接地.
归档时间: |
|
查看次数: |
753 次 |
最近记录: |