【问题标题】:Can smb explain why this is **true**smb 可以解释为什么这是 **true**
【发布时间】:2015-10-15 03:54:29
【问题描述】:

smb 能解释为什么这是正确吗?

not(G).
not(G) :- G, !, fail.

【问题讨论】:

  • Prolog 发现任何东西都是 true,只要它可以在它的 KB 中找到匹配的东西。所以 not(anything) 对 Prolog 来说是真的,因为 not(G) 是真的,而且 G 可以是 anything
  • @false 'smb' 是一个非常懒惰的人的'某人'
  • @Kemal P. 扩展 Ruben 的答案并重复答案:prolog 将尝试通过 按顺序 尝试基础中的谓词来达到您的目标。 (事实上​​,这个“默认选择功能”是语言的一部分)。如果你颠倒你的谓词的顺序,你会得到一个有效的not
  • @Ruben true 会更清楚地命名为 proved

标签: prolog logic


【解决方案1】:

这是真的,因为第一个子句是:

not(_).

你得到的代码很奇怪。 not 这个名字不太符合它明显的声明含义。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2020-07-01
    • 1970-01-01
    • 2012-02-28
    • 2022-01-22
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多