【问题标题】:Why this prolog's output is yes/true?为什么这个序言的输出是yes/true?
【发布时间】:2020-11-04 16:47:44
【问题描述】:

我想知道为什么在逻辑上这是一个有效的推论:

friends(X,Y) :- like(X,Y).
friends(david,sara).

?- like(david,sara).    
yes

【问题讨论】:

  • 不是。查询like(david, sara) 甚至会引发异常,因为您从未定义此谓词。 Prolog 程序的某些其他部分可能没有在此处显示。
  • 嗨,我对它真的很陌生,但仅此而已。没有隐藏任何东西:)

标签: prolog


【解决方案1】:

如果你要说所有的朋友都因为友情而相互喜欢,那么就是:

friends(david,sara) .

like(X,Y) :- friends(X,Y) ; friends(Y,X) .
?- like(david,sara) .

yes .

【讨论】:

  • 嗨,谢谢。我完全理解你的代码,如果我没记错的话,这是一种作案方式。但我的代码不同,它仍然是真的..
  • 也许您还加载了旧谓词?能否尝试重启一下你的 Prolog 环境,看看是否还可以?
猜你喜欢
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多