我正在添加一个列表,当我使用MyArray|MyElement
时,我打印到屏幕上,我得到:
[obj1,obj2] | OBJ3
哪个不对,是吗?理想情况下,我希望它是:
[OBJ1,OBJ2,OBJ3]
如果我使用MyArray|[MyElement]
打印输出给我:
[Obj1,Obj2] | [OBJ3]
这相当于[Obj1,Obj2,Obj3]?
答案 0 :(得分:2)
使用语法[ MyElement | MyArray ]
,您将获得
[Obj3, Obj1, Obj2]
这就是所谓" consing"列表中的元素。您还可以使用append/3
谓词,如下所示:
append( MyArray, [MyElement], X).
产生
X = [Obj1, Obj2, Obj3]
答案 1 :(得分:1)
想出来,因为我追加到列表的末尾,尾巴总是一个数组....
答案 2 :(得分:0)
我不知道我是否理解你的问题,但我会尽力帮助。
如果适合您,请尝试此操作:
add2end(X,[],[X]).
add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT).
分裂:
split(L,N,L1,L2): - 列表L1包含前N个元素 在列表L中,列表L2包含剩余的元素。 (列表,整数,列表,列表)(?,+,?,?)
split(L,0,[],L).
split([X|Xs],N,[X|Ys],Zs) :- N > 0, N1 is N - 1, split(Xs,N1,Ys,Zs).