gpt4 book ai didi

prolog - 前言:失败驱动循环

转载 作者:行者123 更新时间:2023-12-04 23:05:41 27 4
gpt4 key购买 nike

我使用以下失败驱动循环来列出所有内容,而无需使用
分号。

happiness(fred,5).
happiness(john,3).
happiness(grace,2).

someGoal(X) :-
happiness(X,Y), write(Y), tab(4), fail.


在查询模式下,我得到了预期的结果

?- someGoal(_).
5 3 2


如何将这些数字插入列表中,而不是将它们写到屏幕上?
我无法在 someGoal中处理此问题,因为回溯似乎是隐式的。

最佳答案

没错,回溯是Prolog处理替代方案的方式。

使用findall / 3,它使用“内部”回溯来收集所有替代项:

someGoal(X, Values) :-
findall(Value, happiness(X, Value), Values).


然后 ?- someGoal(_, Values).将实例值= [5、3、2]

关于prolog - 前言:失败驱动循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com