takeWhile package:pipes

(takeWhile p) allows values to pass downstream so long as they satisfy the predicate p.
takeWhile (pure True) = cat

takeWhile (liftA2 (&&) p1 p2) = takeWhile p1 >-> takeWhile p2
(takeWhile' p) is a version of takeWhile that returns the value failing the predicate.
takeWhile' (pure True) = cat

takeWhile' (liftA2 (&&) p1 p2) = takeWhile' p1 >-> takeWhile' p2