我不知道为什么这不起作用...这是代码。序言 - 为什么会员/ 2不在这里工作?
cameToTheParty(date(15,9,2011), flor).
cameToTheParty(date(22,9,2011), marina).
cameToTheParty(date(15,9,2011), pablo).
cameToTheParty(date(22,9,2011), pablo).
cameToTheParty(date(15,9,2011), leo).
cameToTheParty(date(22,9,2011), flor).
cameToTheParty(date(15,9,2011), fer).
cameToTheParty(date(22,9,2011), mati).
cameToThePartyThatDay(Peoples, Date):-
bagof(X,cameToTheParty(Date,X),Peoples).
当我尝试
?- cameToThePartyThatDay(People,Day).
它说
People = [flor, pablo, leo, fer], Day = date(15, 9, 2011) ; People = [marina, pablo, flor, mati], Day = date(22, 9, 2011).
但是,当我尝试用一个变量日期的领域,或实际日期下面,等等。 ..
member(X,cameToThePartyThatDay(People,date(15,9,2011))).
它只是说
假。
好了,谢谢你,所以如何是 cameToThePartyThatDay(人民,日(15, 9,2011))。 返回的东西看起来像SWI-prolog中的列表? '>? - cameToThePartyThatDay(People,date(15,9,2011))。 >人们= [flor,pablo,leo,fer] .' – newbie
@newbie你在混淆一个统一的回报 - 什么 '>? - cameToThePartyThatDay(People,date(15,9,2011))。 >人们= [flor,pablo,leo,fer] .'说的是'cameToThePartyThatDay(人们,日期(15,9,2011))'当人们= [flor,pablo,leo,fer]时是真实的。' - 从这里开始,人们将与'[弗洛,巴勃罗,利奥,弗尔]'的名单统一起来。 Prolog谓词永远不会返回,它们只会成功或失败。 –