fej([A|_],A).

farok([_|B],B).

member(E,[E|_]).
member(E,[_|L]):- member(E,L).
% Azaz:
% member(E,L):- fej(L,E).
% member(E,L):- farok(L,L1), member(E,L1).

kiir([]).
kiir([E|L]):- write(E), write(','), kiir(L).

len([],0).
len([_|L],N):- len(L,N1), N is N1+1.

append([],L,L).
append([X|L1],L2,[X|L3]):- append(L1,L2,L3).

select(E,[E|L],L).
select(E,[A|L],[A|L1]):- select(E,L,L1).
% a select annyival több, mint a member, hogy visszaadja azt a listát is,
% amit az eredetiből kapunk E kitörlésével.