我想要一个函数,它将采用两个列表A和B并返回列表Aout和Bout,这样从A开头到给定元素(比如原子'a')的元素已被删除并附加到B的结束,丢弃角色。我的尝试如下:
% usage: take_while(A, Aout, B, Bout)
take_while([], [], B, B).
take_while(['a'|As], As, B, B).
take_while([A|As], As, B, Bout) :-
append(B, [A], Bout),
%take_while(???
最后一句可能是错误的做法。我该怎么做?
答案 0 :(得分:0)
看起来你需要简单地将对take_while的调用添加到最后一个子句:(实际上,我不确定为什么需要第二个参数,所以我将其从这个答案中删除)。
take_while([], [], B, B).
take_while(['a'|As], As, B, B).
take_while([A|As], ARem, B, Bout) :-
append(B, [A], BTemp), take_while(As, ARem, BTemp, Bout).