在条件prolog上返回false的基本情况

在条件prolog上返回false的基本情况,prolog,Prolog,我正在用Prolog做一个基础项目。我想写一个函数,根据输入列表返回一个数字。我还想确保当输入列表为空时,结果为false。 函数应该是这样的 parseList(List,N),其中N是一个数字。我想知道一种在我们尝试时返回False的方法 parseList([], N). 其中N是任意数 我试着这样做的基本情况 parseList([], False). 然而,这似乎不起作用 谁能帮我一下吗?谢谢大家! 正如潜伏者在他的评论中所说,在这种情况下,忽略空列表条件并处理一个元素的列表将导致

我正在用Prolog做一个基础项目。我想写一个函数,根据输入列表返回一个数字。我还想确保当输入列表为空时,结果为false。 函数应该是这样的 parseList(List,N),其中N是一个数字。我想知道一种在我们尝试时返回False的方法

parseList([], N).
其中N是任意数

我试着这样做的基本情况

parseList([], False).
然而,这似乎不起作用


谁能帮我一下吗?谢谢大家!

正如潜伏者在他的评论中所说,在这种情况下,忽略空列表条件并处理一个元素的列表将导致空列表失败。但是,在更一般的情况下,如果要声明失败的规则,只需包含
false
,因为这永远不可能是真的,或者包含执行相同操作的
fail
。例如:

parseList([],_) :- false.
或(现已弃用)


(其中,
用于表示不重要的变量,否则将触发单变量警告)。

在Prolog中不“返回”值
false
。如果谓词在给定参数下无法成功,则谓词将失败(结果为
false
)。因此,缺少支持空列表的谓词子句将自动失败。只需将
parseList([],N)
保留在代码之外即可。但是,是否应该有一个基本情况来支持谓词呢。当列表不为空时谓词的停止点?您的基本情况不必处理空列表。它可以处理一个元素的列表,例如,
parseList([X],N):-…
然后您的递归案例可以处理两个或多个元素,
parseList([X,Y | T],N):-…
。酷!谢谢
false/0
是更好的选择,也是ISO标准的最新补充:它是
true/0
的更明显的反面
fail/0
succeed/0
相反,后者根本不可用。
parseList([],_) :- fail.