Use an IO function to choose what iteratee to run.
-- Typically this function handles user interaction and
-- returns with a simple iteratee such as
-- The IO function takes a value of type
a as input, and
-- should return 'Right a' to continue, or 'Left b'
-- to terminate. Upon termination, ioIter will return 'Done b'.
-- The second argument to
ioIter is used as the initial input
-- to the IO function, and on each successive iteration the
-- previously returned value is used as input. Put another way,
-- the value of type
a is used like a fold accumulator.
-- The value of type
b is typically some form of control code
-- that the application uses to signal the reason for termination.