--- | Transform a Pipe of 'String's into one of 'Text' chunks
-pack :: Monad m => Pipe String Text m r
-pack = P.map T.pack
-{-# INLINEABLE pack #-}
-
--- | Transform a Pipes of 'Text' chunks into one of 'String's
-unpack :: Monad m => Pipe Text String m r
-unpack = for cat (\t -> yield (T.unpack t))
-{-# INLINEABLE unpack #-}
-
--- | @toCaseFold@, @toLower@, @toUpper@ and @stripStart@ are standard 'Text' utilities,
--- here acting as 'Text' pipes, rather as they would on a lazy text
-toCaseFold :: Monad m => Pipe Text Text m r
-toCaseFold = P.map T.toCaseFold
-{-# INLINEABLE toCaseFold #-}
-
--- | lowercase incoming 'Text'
-toLower :: Monad m => Pipe Text Text m r
-toLower = P.map T.toLower
-{-# INLINEABLE toLower #-}
-
--- | uppercase incoming 'Text'
-toUpper :: Monad m => Pipe Text Text m r
-toUpper = P.map T.toUpper
-{-# INLINEABLE toUpper #-}
-
--- | Remove leading white space from an incoming succession of 'Text's
-stripStart :: Monad m => Pipe Text Text m r
-stripStart = do
- chunk <- await
- let text = T.stripStart chunk
- if T.null text
- then stripStart
- else do yield text
- cat
-{-# INLINEABLE stripStart #-}
-
--- | @(take n)@ only allows @n@ individual characters to pass;