gpt4 book ai didi

prolog - Prolog中失败谓词的用途是什么?

转载 作者:行者123 更新时间:2023-12-03 13:24:51 26 4
gpt4 key购买 nike

我无法提出需要的情况。

最佳答案

优雅的系统提供false/0作为命令性fail/0的声明性同义词。当您手动想要强制回溯副作用时,例如:

?- between(1,3,N), format("line ~w\n", [N]), false.
line 1
line 2
line 3

除了 false/0之外,您还可以使用任何失败的目标,例如短一些:
?- between(1,3,N), format("line ~w\n", [N]), 0=1.
line 1
line 2
line 3

因此, false/0不是严格需要的,但是非常好。

编辑:我有时看到初学者想要声明例如“我的关系不适合空列表”,然后添加:
my_relation([]) :- false.
他们的代码。这不是必须的,也不是使用 false/0的一个很好的示例,除非是在以编程方式生成的故障片中。相反,请专注于说明有关您的关系的事情。在这种情况下,只需省略整个子句,然后仅为不为空的列表定义关系,即至少具有一个元素:
my_relation([L|Ls]) :- etc.
或者,如果您还描述列表以外的其他术语,请使用类似以下的约束:
my_relation(T) :- dif(T, []), etc.
仅给出这两个子句中的一个(或什至两个),查询 ?- my_relation([]).将自动失败。为此,没有必要引入一个从不成功的附加子句。

关于prolog - Prolog中失败谓词的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001825/

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