SWI-Prolog offers exclude/3
and other such meta-predicates. Your original problem can be coded like this:
are_identical(X, Y) :-
X == Y.
filterList(A, In, Out) :-
exclude(are_identical(A), In, Out).
Usage example:
?- filterList(A, [A, B, A, C, D, A], Out).
Out = [B, C, D].