filter/3
testuje všechny prvky zadaného
seznamu pomocí stejného predikátu a do výsledného seznamu vloží jen ty
prvky, které splňují danou podmínku. Provádí tedy klasickou filtraci:filter(Cond,[IH|IT],Filtered):- (:-@ [Cond,IH] -> Filtered=[IH|OT] ; Filtered=OT), filter(Cond,IT,OT). filter(_,[],[]).Predikát
filter(+Cond, +Input, -Filtered)
předpokládá,
že je predikát arity a seznam. Výstupní
argument je seznam, který je vytvořen z těch členů
seznamu , které splňují podmínku . Příklad:?- filter(isOdd,[1,2,3],R). R = [1,3] Yes