Prolog不应该返回true(是)

时间:2017-10-01 22:12:42

标签: prolog

mergelist([],[],[]).
mergelist([X],[],[X]).
mergelist([],[Y],[Y]).

我正在运行此查询?-mergelist([1],[],[1]). 返回true

然后我运行此查询?-mergelist([1,2],[],[1,2]).它返回false(否)。

我不确定是什么问题。

我正在使用ECLiPSe 6.1

1 个答案:

答案 0 :(得分:3)

Prolog无法与以下任何一种模式匹配[1,2]:

  • []
  • [X]

[X]专门用于模式匹配单元素列表。

试试这个:

mergelist(L,[],L) :- is_list(L).
mergelist([],L,L) :- is_list(L).