Actually all this is not only similar to Unix piping, but lazy evaluation in general. Unix programs might be encoded with monads, like `Maybe'. (this is either `Just <foo>' or `Nothing'). So depending on success or failure a monadic OR would just continue or abort. Regards, Ulrich