从一个列表中获取元素并追加到其他
问题描述:
我想要一个函数,它将采用两个列表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(???
最后一项可能是错误的做法。我该怎么做呢?
答
看起来你需要简单地将调用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).
+0
第二个参数是有,因为我需要修剪的名单答:我现在如何才能访问它? – Koen 2011-03-31 13:50:59
+0
@Koen在这种情况下,就把它留在那里吧。我将编辑我的答案以适应。 – 2011-03-31 13:57:15
现在想起来,'take_until'本来应该是名称... – Koen 2011-03-31 13:40:29