【发布时间】:2018-11-29 00:12:26
【问题描述】:
假设我有一个谓词有时会给我多个输出。像这样-
foo(Number, Out) :- Number < 10, Out = less_than_ten.
foo(Number, Out) :- Number > 0, Out = more_than_zero.
我如何获得foo 在另一个谓词中给出的所有Out 值,记住它有时会给出一个,有时会给出多个(例如在列表中)?
编辑 - 不太确定我得到的答案是否能回答我的问题,所以我会更具体。使用上述谓词,我可以运行查询 foo(5, Out). 这满足两个规则,所以如果我在 SWI-prolog 中运行它,我会得到这个 -
?- foo(5, Out).
Out = less_than_ten
然后我可以输入一个分号让prolog回溯并寻找其他解决方案-
?- foo(5, Out).
Out = less_than_ten ;
Out = more_than_zero.
因此,如果我在另一个谓词中执行此谓词,在给定 Number = 5 的情况下,如何获取 Out 的所有有效值?
【问题讨论】:
标签: prolog prolog-setof