我是Prolog学习的新手,并为该环境尝试了逻辑OR运算符:
%a.
b.
foo:- a ; b.
我已评论a.
尝试逻辑OR运算符,但它不起作用。如果您使用?-foo.
进行查询,则会收到例外情况。 Prolog只检查第一个词而不是第二个词。有人可以帮帮我吗?
最好的问候。
答案 0 :(得分:2)
由于a/0
未定义,因此您收到异常。为了检查or-operator,你可以明确地将a
定义为false。
a:-false.
b.
foo:- a ; b.
现在?- foo.
给出答案true.
Prolog打造一个封闭的世界'假设。它只能评估定义的谓词的真实性或错误性。这意味着您需要至少一个在其左侧具有谓词的子句(或者事实,因为这将被解释为没有条件的clausel,因此没有右侧)。
答案 1 :(得分:1)
这基本上相当于:
foo :- a.
foo :- b.
第一个条款试图通过评估foo
是否为真来评估a
是否为真。 a
甚至不存在于数据库中,因此您会收到错误。