A value of type IO a is a computation which, when performed, does some I/O before returning a value of type a.
There is really only one way to "perform" an I/O action: bind it to Main.main in your program. When your program is run, the I/O will be performed. It isn't possible to perform I/O from an arbitrary function, unless that function is itself in the IO monad and called at some point, directly or indirectly, from Main.main.
IO is a monad, so IO actions can be combined using either the do-notation or the >> and >>= operations from the Monad class.
The standard IO library.
Basic concurrency stuff.
The Haskell 98 type for exceptions in the IO monad. Any I/O operation may raise an IOError instead of returning a result. For a more general type of exception, including also those that arise in pure code, see Control.Exception.Exception.
In Haskell 98, this is an opaque type.
Mutable references in the IO monad.
Callback invoked on I/O events.
An abstract type that contains a value for each variant of IOError.
These are the standard IO exceptions generated by Haskell's IO operations. See also System.IO.Error.
Exceptions that occur in the IO monad. An IOException records a more specific error type, a descriptive string and maybe the handle that was used when the error was flagged.
A mutable variable in the IO monad
I/O operations required for implementing a Handle.
Type of a device that can be used to back a GHC.IO.Handle.Handle (see also GHC.IO.Handle.mkFileHandle). The standard libraries provide creation of GHC.IO.Handle.Handles via Posix file operations with file descriptors (see GHC.IO.Handle.FD.mkHandleFromFD) with FD being the underlying IODevice instance.
Users may provide custom instances of IODevice which are expected to conform the following rules:
Show more results