For m and n, their input and output are linear datatypes--the assumption that also holds for Haskell IO commands.
This is how pipes are implemented under MS-DOS, which is a single-task operating system.