我的'追加'功能有什么问题?

时间:2013-04-04 01:56:41

标签: prolog

我正在研究一个简单的Prolog示例,我在其中一个课程中看到,使用并重新实现'append'。这就是我的(来自班级):

append1([],L,L).
append1([X|L1],L2,[X|L3]) :-
    append1(L1,L2,L3).

当我这样做时,结果为false:

append1([a,b],[c,d],L).
false.

但是当我这样做时(使用内置追加),结果为true:

append([a,b],[c,d],L).
true.

为什么会有区别?

为什么以下两个附加示例都会导致“真实”?出于某种原因,我希望看到Ls的值列表...

append(L1,L2,[a,b,c]).
true.

append([a,b],[c,d],L).
true.

1 个答案:

答案 0 :(得分:1)

工作正常:

Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.33)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam

?- [user].
append1([],L,L).
append1([X|L1],L2,[X|L3]) :-
   append1(L1,L2,L3).
^D
true.

?- append1([a,b],[c,d],L).
L = [a, b, c, d].

注意:^ D是您需要按下的ctrl字符 退出[用户]模式。您不必处于[用户]模式 提出查询。可能是你遇到的错误。

再见