Je ne sais pas pourquoi cela ne fonctionne pas ... voici le code.Prolog - Pourquoi le membre/2 ne travaille pas ici?
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).
Lorsque je tente
?- cameToThePartyThatDay(People,Day).
il dit
People = [flor, pablo, leo, fer], Day = date(15, 9, 2011) ; People = [marina, pablo, flor, mati], Day = date(22, 9, 2011).
Mais, quand j'essayez ce qui suit avec un champ de la date variable ou une date réelle, comme. ..
member(X,cameToThePartyThatDay(People,date(15,9,2011))).
il dit seulement
faux.
Ok, Merci, alors comment est-ce cameToThePartyThatDay (Les gens, la date (15, 9,2011)). renvoie quelque chose qui ressemble à une liste dans SWI-prolog? '>? - cameToThePartyThatDay (People, date (15,9,2011)). > People = [flor, pablo, leo, fer] .' – newbie
@newbie Vous confondez un retour avec une unification - ce que '>? - cameToThePartyThatDay (People, date (15,9,2011)). > People = [flor, pablo, leo, fer]. »Dit que' cameToThePartyThatDay (People, date (15,9,2011)). 'Est vrai quand' People = [flor, pablo, leo, fer].'- à partir de là, les gens seront unifiés avec la liste' [flor, pablo, leo, fer] '. Les prédicats Prolog ne reviennent jamais, ils réussissent ou échouent. –