【发布时间】:2011-09-24 18:16:20
【问题描述】:
我在序言中遇到了一个简单的问题。 让我们考虑一下程序
worker(bill).
worker(smitt).
worker(fred).
worker(dany).
worker(john).
car(bmw).
car(mazda).
car(audi).
owner(fred,mazda).
owner(dany,bmw).
owner(john,audi).
我需要再添加一个谓词 no_car(X),如果工人 X 没有汽车,即如果我们输入一个查询,这将是真的 ?:- no_car(X)。 序言应该回答
X=smitt,
X=bill,
yes
我所做的是
hascar(X):-owner(X,_).
nocar(X):- worker(X),not hascar(X).
但是这种方法不起作用,因为匿名变量仅适用于查询。 所以,我真的坚持这一点。 我知道 SQL 中有“NOT EXISTS”字样可以在查询中表达这个逻辑,但是 prolog 中有没有类似的东西?
【问题讨论】:
-
如果您使用 \+ 而不是不使用,您的代码可以工作,它与匿名变量无关..
标签: prolog