最后一个元素未在列表中插入 - Prolog

时间:2017-02-25 21:29:45

标签: list prolog

我想附加一个像这样的连续列表:

result(R) :- append(A,B,C), append(C,D,E), append(E,F,R). 
  

PS:A,B,D和F是同一规则结果(R)中的另一个谓词的结果(列表)。
  例如:A类似于[1,2]

我的目标是获得一个清单。

例子:A是[1,2],B是[3,4],D是[5],F是[6,7],R是[1,2,3,4,5,6] 1,7]

但是当我用trace.执行此代码时,我收到以下错误:

Fail: (19) append([12|13], 19, _G23439) ? creep

最后一个元素没有追加!这是追加的谓词:

appende([], List, List).
appende([Head|Tail], List, [Head|Rest]) :-appende(Tail, List, Rest).

(为凯特编辑):

这是规则:

s1(X,Y) :-
   ( ws(X,R) ; 1 is A ),
   ( ai(X,S) ; 1 is B ),
   ( py(X,T) ; 1 is C ),
   ( stat(X,U) ; 1 is D ),
   ( bdav(X,V) ; 1 is E ),
   ( ang(X,W) ; 1 is F ),
   appende(R,S,RS),
   appende(RS,T,RST),
   appende(RST,U,RSTU),
   append‌e(RSTU,V,RSTUV),
   appe‌​nde([],RSTUV,RSTUVS)‌​,
   appende(RSTUVS,[W],Final),
   append([],Final,Y),
   avg(Y,M),
   maplist(=<(10),[M]),
   somme([A,B,C,D,E,F],So),
   maplist(>=(1),[So]).

追加是:

append([], List, List).
append([Head|Tail], List, [Head|Rest]) :-
   append(Tail, List, Rest).

目标是这样的获取Final列表:[1,2,3,4,5,6]并将其存储在Y

0 个答案:

没有答案