prolog中的简单查询

时间:2013-12-10 20:38:19

标签: prolog

我有这样的声明:

friends(Nancy,richard,_,Nancy,michael)

这个查询:

friends(simon, Nancy, Friend, Richard, Friend).

我得到的结果是:

Nancy = richard
Friend = Michael
Richard = Simon

有人能向我解释这些结果是如何产生的吗?

1 个答案:

答案 0 :(得分:2)

您的规则包含变量Nancy

   friends(  Nancy,  richard,       _,    Nancy,  michael).

使用规则时,其变量会重命名:

   friends(      A,  richard,       _,        A,  michael).
?- friends(  simon,    Nancy,  Friend,  Richard,   Friend).

因此我们得到A=simon, richard=Nancy, _=Friend, A=Richard, michael=Friend

仅报告查询中存在的变量:

Richard=simon, Nancy=richard, Friend=michael.

正如您所看到的,您在结果中存在拼写错误。

另见:Prolog Query - Trying to understand how this result happens