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 stage in a pipeline (see plumbing). Compare sponge. 2. (functional programming) A higher-order function which 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 See also filter promotion. [Jargon File]