gpt4 book ai didi

prolog - 忽略序言中的类型错误并返回 false

转载 作者:行者123 更新时间:2023-12-04 04:49:13 25 4
gpt4 key购买 nike

我希望 prolog 引擎返回 false 而不是错误。
我有这个代码:

:-use_module(library(clpfd)).

set_1(X):-member(X,[f(f(1))]).
p :- X in 1..3,set_1(f(X)).

当我查询 p 时,出现错误:
?- p.
ERROR: Type error: `integer' expected, found `f(1)'

我希望输出看起来像:
 ?- p.
false

即使我将 member(X,[f(f(f(1))]) 更改为 member(X,[f(f(f(f(1)))]) 或其他一些集合,我也希望看到 false对我的程序进行任何其他更改。

我正在使用 swi-prolog v 5.10.4

最佳答案

使用 catch/3 .示例:

?- catch(p, error(type_error(_,_),_), false).
false.

用这样的静默失败替换类型错误在声明上是完全可以的。这不适用于实例化错误,因为当您添加更多目标时,实例化错误可以转向解决方案,而类型错误则不能。

关于prolog - 忽略序言中的类型错误并返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684895/

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