Prolog 中的返回值

Posted

技术标签:

【中文标题】Prolog 中的返回值【英文标题】:Return value in Prolog 【发布时间】:2016-07-14 16:16:44 【问题描述】:

我发现 Prolog 中的一些“函数”会返回一些值,例如 min/2 和 max/2 等,尽管绝大多数只返回 true 或 false。这些调用或分组与布尔值不同吗?除了查看每个函数的文档之外,如何识别它们是否返回了一个值。我可以在某处找到返回某些值的函数列表吗?

【问题讨论】:

谓词不返回任何东西,它们将变量与值统一。此外,谓词成功 (true) 或失败 (false)。 最大值和最小值呢? 【参考方案1】:

minmaxlog 等操作是特定的arithmetic functions,与标准谓词不同。它们使用is/2=:=/2 等进行评估。标准谓词不返回 值,甚至不为真或假。他们成功或失败。这与返回值不同。将值作为函数返回意味着您可以在变量中捕获该值,但谓词没有返回真/假数据。 Prolog 解释器只显示真或假,让您知道它是否成功。一些解释器可能分别输出是或否而不是真或假。

为了知道给定的术语是谓词还是函数,上面引用的文档是您最好的选择,因为它列出了所有有效的算术函数。这一切都在一个地方,所以并不难。函数只对数字进行操作。例如,您还可以使用 current_arithmetic_function(Head)(如文档中所述)来确定 Head 是否是可评估函数。

【讨论】:

以上是关于Prolog 中的返回值的主要内容,如果未能解决你的问题,请参考以下文章

Prolog不会返回值

自定义 Prolog 算术函数

Prolog:如何删除谓词中的对称值

; (或)Prolog中的运算符不会返回true,除非左侧为true,即使运算符的右侧本身返回true也是如此

如何在序言中返回所有小于或等于输入值的事实

谓词用于返回prolog中给定列表的元素顺序的排列