Мне нужна функция, которая будет принимать два списка 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(???
Последний пункт может быть неправильным подходом. Как мне это сделать?