The names in this module clash heavily with the Haskell Prelude, so I
recommend the following import scheme:

import Pipes
import qualified Pipes.Prelude as P -- or use any other qualifier you prefer

Note that String-based IO is inefficient. The String-based utilities
in this module exist only for simple demonstrations without incurring a
dependency on the text package.

Also, stdinLn and stdoutLn remove and add newlines, respectively. This
behavior is intended to simplify examples. The corresponding stdin and
stdout utilities from pipes-bytestring and pipes-text preserve
newlines.

Note: toListM is not an idiomatic use of pipes, but I provide it for
simple testing purposes. Idiomatic pipes style consumes the elements
immediately as they are generated instead of loading all elements into
memory.