我是初学者并且有一个菜鸟问题:
假设我有这些代码行:
p(1).
p(2):-!.
p(3).
我正在运行p(X)
。
问题:我得到了X=1 , X=2
为什么X
也不等于3
?
答案 0 :(得分:4)
Prolog程序是一系列语句,称为子句,形式为
P0 :- P1, P2, …, Pn.
为了帮助您理解您的问题,您必须知道:
P0, P1, P2, …, Pn
中的每一个都是原子或结构。
句点终止每个Prolog条款
陈述含义:
如果P0
和P1
以及......和P2
为真,则“Pn
为真”
程序含义:
“为了满足目标P0
,请满足目标P1
然后P2
然后......然后Pn
“。
P1, P2, …, Pn
的连接形成了条款的主体。P.
”表示“P is true
”或“目标P is satisfied
”:- P1, P2, …, Pn.
”或“?- P1, P2, …, Pn.
”是解释为的查询
“Are P1 and P2 and … and Pn true?”
或
“满足目标P1然后P2然后......然后Pn”Cut子句包含“!”符号(也发音为bang)。当Prolog解释器看到剪切符号时,它会删除与包含爆炸的规则具有相同正面文字的剩余规则。这可以对程序产生一些影响 - 它可以代表某些负面结果,它可以避免或平滑地处理故障,或者它可以简单地消除部分搜索空间并加速程序。
答案 1 :(得分:1)