在序言中列出来自基地的夫妇

listing couples from base in prolog

我正在尝试创建一个谓词,该谓词能够从一组男人和女人中列出每对可能的情侣。但是我的试验return我真的即使这个男人或女人不属于我的知识库。

man(al).
man(john).

woman(elsa).
woman(julia).

couple(man(_),woman(_)).

查询:

?- couple(X,Y).

答案:

X: al
Y: elsa

X: al
Y: julia

X: john
Y: elsa
...

注意:我使用的是 SWI-Prolog。

我不是专家,但这个定义似乎可以解决问题:

couple(M, W) :- man(M), woman(W).
couple(W, M) :- man(M), woman(W).

如果您只对 独特 对夫妇感兴趣,那么您可以舍弃其中任何一行。