2
我希望prolog引擎返回false而不是错误。 我有这样的代码:忽略序言中的类型错误并返回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
我希望看到即使将成员(X,[f(f(1))])更改为成员(X,[f(f(f(1)))]]或某个其他集合,也不会做任何其他更改我的程序。
我使用SWI-Prolog的v 5.9.4
谢谢,这有助于。不幸的是,在某些情况下,错误情况下返回false的行为不是预期的行为。考虑set_1(X): - member(X,[f(f(1)),f(1)])。答案应该是真的,但它会返回false,因为在与第一个参数匹配时出现错误。我最终实现了自己的成员函数,它始终有效。 –