Pipes can both await and yield.
await
yield
type Pipe a b = Proxy () a () b
This Pipe awaits an Int and converts it to a String:
Int
String
intToStr :: Monad m => Pipe Int String m () intToStr = forever $ await >>= (yield . show)