isolateWhile :: Monad m => (a -> Bool) -> C.Conduit a m a
isolateWhile pr = loop
    where loop = C.await >>= maybe (return ())
                                   (\val -> if pr val
                                               then C.yield    val >> loop
                                               else C.leftover val
                                   )
isolateWhile :: Monad m => (a -> Bool) -> C.Conduit a m a
isolateWhile pr = loop
    where loop = C.await >>= maybe (return ())
                                   (\val -> if pr val
                                               then C.yield    val >> loop
                                               else C.leftover val
                                   )
isolateWhile pr = loop
    where loop = C.await >>= maybe (return ())
                                   (\val -> if pr val
                                               then C.yield    val >> loop
                                               else C.leftover val
                                   )