我有这样的声明:
friends(Nancy,richard,_,Nancy,michael)
这个查询:
friends(simon, Nancy, Friend, Richard, Friend).
我得到的结果是:
Nancy = richard
Friend = Michael
Richard = Simon
有人能向我解释这些结果是如何产生的吗?
答案 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