【发布时间】:2011-09-05 21:26:04
【问题描述】:
我正在编写一个名为 subseq 的函数,它检查一个列表是否是另一个列表的子序列。
subseq([],[]).
subseq([],[Y|Ys]).
subseq([X|Xs],[Y|Ys]) :- X=:=Y, subseq(Xs,Ys).
subseq([X|Xs],[Y|Ys]) :- X=\=Y, subseq([X|Xs],Ys).
当我尝试 subseq(X,[1,2]) 我得到:
X = [] ? ;
uncaught exception: error(instantiation_error,(=:=)/2)
为什么会这样?我的猜测是 [] 正在由 =:= 操作,但我如何检查/防止此错误?
【问题讨论】:
标签: prolog