Prolog和兄弟姐妹的关系?

时间:2013-12-03 00:42:05

标签: prolog

我是Prolog的新手并且遇到了一些困难。我有:

man(ken).
man(tom).
woman(juli).

father(ken, tom).
father(ken, juli).

male(A) :- man(A).
brother(A,B) :- male(A), father(C,A), father(C,B), (A \= B).

我知道男/男是多余的,但这是任务的一部分。无论如何,当我尝试类似的东西时:

|?- brother(tom, juli).

我得到“不”作为回应。我确信我犯了一个愚蠢的,简单的错误,但我缺乏理解使得它很难找到。谁能看到我的问题是什么?

1 个答案:

答案 0 :(得分:3)

当您输入:

|?- brother(tom, juli).

你会看到类似这样的回复(SWI Prolog):

true ? ;

no
| ?-

所以它首先回复“true”(给出匹配),然后,在您输入;以显示更多解决方案后,它会说“不”表示没有其他解决方案。在这种情况下,一些prolog解释者可能会说“不”或“假”,具有相同的含义。 prolog解释器的这种反应最初会引发许多新的prolog用户。

您也可以按“输入”,这意味着您已完成并且不希望看到任何进一步的解决方案:

true ?

yes
| ?-

然后你得到“是”。