member2(A,[A|R]) :- not(member(A,R)).
member2(A,[_|R]) :- member2(A,R).
を定義しておいて
?- findall(U,季節(U),L),member2(X,L). /* で良さそうなものだが */
X = 夏;
X = 春;
no
?- と取り出し順序が逆転してしまう。