Data.Iteratee.IO.Interact

iteratee-0.8.8.1: Iteratee-based I/O

Data.Iteratee.IO.Interact

Synopsis

- ioIter :: (MonadIO m, Nullable s) => (a -> IO (Either b (Iteratee s m a))) -> a -> Iteratee s m b

# Documentation

ioIter :: (MonadIO m, Nullable s) => (a -> IO (Either b (Iteratee s m a))) -> a -> Iteratee s m b

Use an IO function to choose what iteratee to run. -- Typically this function handles user interaction and -- returns with a simple iteratee such as `head` or `seek`. -- -- 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.