Prolog 中的返回值
Posted
技术标签:
【中文标题】Prolog 中的返回值【英文标题】:Return value in Prolog 【发布时间】:2016-07-14 16:16:44 【问题描述】:我发现 Prolog 中的一些“函数”会返回一些值,例如 min/2 和 max/2 等,尽管绝大多数只返回 true 或 false。这些调用或分组与布尔值不同吗?除了查看每个函数的文档之外,如何识别它们是否返回了一个值。我可以在某处找到返回某些值的函数列表吗?
【问题讨论】:
谓词不返回任何东西,它们将变量与值统一。此外,谓词成功 (true
) 或失败 (false
)。
最大值和最小值呢?
【参考方案1】:
min
、max
、log
等操作是特定的arithmetic functions,与标准谓词不同。它们使用is/2
、=:=/2
等进行评估。标准谓词不返回 值,甚至不为真或假。他们成功或失败。这与返回值不同。将值作为函数返回意味着您可以在变量中捕获该值,但谓词没有返回真/假数据。 Prolog 解释器只显示真或假,让您知道它是否成功。一些解释器可能分别输出是或否而不是真或假。
为了知道给定的术语是谓词还是函数,上面引用的文档是您最好的选择,因为它列出了所有有效的算术函数。这一切都在一个地方,所以并不难。函数只对数字进行操作。例如,您还可以使用 current_arithmetic_function(Head)
(如文档中所述)来确定 Head 是否是可评估函数。
【讨论】:
以上是关于Prolog 中的返回值的主要内容,如果未能解决你的问题,请参考以下文章