【问题标题】:Prolog function not workingProlog功能不起作用
【发布时间】:2015-12-26 17:16:25
【问题描述】:

所以我在 test.pl 文件中写了这个 Facts:

bottle(b1).
bottle(b2).
bottle(b3).
bottle(b4).

full(b1,100).
full(b2,750).
full(b3,500).
full(b4,250).
consume(X, Y). :-full(X,Z);Z>=Y.

单词的最后一行: 如果消耗的 Y 参数小于瓶子满的情况,它应该返回 true。但是,如果我查询这个函数,结果总是正确的。我是 Prolog 的新手,所以如果你能解释为什么会出现错误并指出我如何解决这个错误的正确方向。

【问题讨论】:

  • 您应该收到很多关于您选择忽略的“单例变量”的警告。
  • 请注意 Prolog 不使用 函数,这些是 谓词,这是一个重要方面。
  • @false 是的,我确实做到了
  • @false 为什么我会收到错误消息?消耗(瓶(X),Y):- 满(瓶(X),Z);Z
  • =<替换<=

标签: function prolog


【解决方案1】:

一个杂散点。

% original
consume(X, Y). :-full(X,Z);Z>=Y.
% modified
consume(X, Y) :-full(X,Z);Z>=Y.

请注意,这只修复了“始终正确”的问题。

【讨论】:

  • 为什么我需要右边的点=Z>=Y.? @dlask
  • 这是Prolog的语法。每个事实和每个规则都必须以一个点结束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2021-08-27
  • 2013-01-31
  • 2013-01-17
相关资源
最近更新 更多