このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1294836668/172
#  質問 
#  リストから特定の方法でそのメンバーを消去したいとき 
#  for member in list: 
#    if (delete condition): 
#      list.remove(member) 
#  とすると、消去条件のメンバーがリスト中に並んでると、 
#  処理がスキップされます 
#  理由はメンバーを消したときにインデックスがずれるからだと思うんですが 
#  そして実際消去するメンバーリストを別に作ると回避できるんですが 
#  普通はどうやるもんなんでしょうか? 
# 
# 

リストから条件付きでメンバーを消去する(_ならび,_要素変数,_要素変数を含む条件,_消去されたならび) :-
        findall(_要素変数,(
                    append(_,[_要素変数|_],_ならび),
                    \+(call(_要素変数を含む条件))),
                _消去されたならび).