Я пишу функцию 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)
Почему это происходит?Я предполагаю, что [] управляется =: =, но как мне проверить / предотвратить эту ошибку?