2

我正在研究我在我的一个课程中看到的一个简单的 Prolog 示例,使用并重新实现“附加”。这就是我所拥有的(来自课堂):

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

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

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

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

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

为什么有区别?

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

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

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

1 回答 1

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 是退出 [user] 模式所需的 ctrl 字符。您不必处于 [user] 模式即可提出查询。可能是您遇到的错误。

再见

于 2015-04-21T10:19:58.140 回答