1. (Originally
Unix, now also
MS-DOS) A program that
processes an input data stream into an output data stream in
some well-defined way, and does no I/O to anywhere else except
possibly on error conditions; one designed to be used as a
takes a
predicate and a list and returns those elements of
the list for which the predicate is true. In
Haskell:
filter p [] = []
filter p (x:xs) = if p x then x : rest else rest
where
rest = filter p xs