Мне не совсем понятно, что вы ищете, но поможет ли одно из следующего?
% process head and tail recursively, feeding all leaves to write()
write_leaves([]).
write_leaves([H|T]) :- write_leaves(H), write_leaves(T).
write_leaves(X) :- write(X).
или, может быть,
% process_list iterates over just one level of list;
% process_item decides what to do with each element.
process_item([1|T]) :- write(T).
process_item([H|_]) :- write(H).
process_list([]).
process_list([H|T]) :- process_item(H), process_list(T).
Если ни один из них не близок к тому, что вы хотите, возможно, стоит сделать ваш вопрос немного более явным.