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).

我得到的回答是"不"。我确信我犯了一个愚蠢而简单的错误,但我缺乏理解,很难找到。有人能看到我的问题是什么吗?

输入时:

|?- brother(tom, juli).

你会看到这样的回应(SWI Prolog):

true ? ;
no
| ?-

因此,它首先以"true"(给出匹配)作为响应,然后,在您输入;以显示更多解决方案后,它会说"no"表示没有进一步的解决方案。在这种情况下,一些序言解释器可能会说"不"或"假的",意思相同。这个来自prolog解释器的响应最初抛出了许多新的prolog用户。

或者,你可以按"输入",这意味着你已经完成了,不想看到任何进一步的解决方案:

true ?
yes
| ?-

然后你会得到"是"。

最新更新