Hi filter :: (a -> Bool) -> [a] -> [a] filter f = foldr (\x -> \xs -> if (f x) then (x:xs) else xs) [] Somehow I feel this could be done more elegantly. What does the list think? Thanks, Paul