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