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 Prelude.>> and Prelude.>>= operations from the Prelude.Monad
class.
Instances51Monad, Functor, MonadFix, MonadFail, Applicative, GHCiSandboxIO, …
Monad IODefined in ghc-internal-9.1003.0 · GHC.Internal.BaseFunctor IODefined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonadFix IODefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FixMonadFail IODefined in ghc-internal-9.1003.0 · GHC.Internal.Control.Monad.FailApplicative IODefined in ghc-internal-9.1003.0 · GHC.Internal.BaseGHCiSandboxIO IODefined in ghc-internal-9.1003.0 · GHC.Internal.GHCiQuote IODefined in template-haskell-2.22.0.0 · Language.Haskell.TH.SyntaxAlternative IODefined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonadPlus IODefined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonadIO IODefined in base-4.20.2.0 · Control.Monad.IO.ClassQuasi IODefined in template-haskell-2.22.0.0 · Language.Haskell.TH.SyntaxMonadCatch IODefined in exceptions-0.10.9 · Control.Monad.CatchMonadMask IODefined in exceptions-0.10.9 · Control.Monad.CatchMonadThrow IODefined in exceptions-0.10.9 · Control.Monad.CatchPrimBase IODefined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad IODefined in primitive-0.9.1.0 · Control.Monad.PrimitiveAlt IODefined in semigroupoids-6.0.1 · Data.Functor.AltThis instance does not actually satisfy the (<.>) right distributive law It instead satisfies the "left catch" law
Apply IODefined in semigroupoids-6.0.1 · Data.Functor.Bind.ClassBind IODefined in semigroupoids-6.0.1 · Data.Functor.Bind.ClassPlus IODefined in semigroupoids-6.0.1 · Data.Functor.PlusInvariant IODefined in invariant-0.6.4 · Data.Functor.InvariantSelective IODefined in selective-0.7.0.1 · Control.SelectivePointed IODefined in pointed-5.0.4 · Data.PointedMonadError IOException IODefined in mtl-2.3.1 · Control.Monad.Error.ClassMonadBase IO IODefined in transformers-base-0.4.6 · Control.Monad.BaseMArray IOUArray Int16 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Int32 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Int64 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Int8 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Word16 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Word32 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Word64 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Word8 IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Bool IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Char IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Double IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Float IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Int IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray Word IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOArray e IODefined in array-0.5.8.0 · Data.Array.BaseMArray TArray e IODefined in stm-2.5.3.1 · Control.Concurrent.STM.TArrayWrites are slow in IO.
Storable e => MArray StorableArray e IODefined in array-0.5.8.0 · Data.Array.Storable.InternalsMArray IOUArray (FunPtr a) IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray (Ptr a) IODefined in array-0.5.8.0 · Data.Array.IO.InternalsMArray IOUArray (StablePtr a) IODefined in array-0.5.8.0 · Data.Array.IO.InternalsSemigroup a => Semigroup (IO a)Defined in ghc-internal-9.1003.0 · GHC.Internal.BaseMonoid a => Monoid (IO a)Defined in ghc-internal-9.1003.0 · GHC.Internal.Basea ~ () => HPrintfType (IO a)Defined in base-4.20.2.0 · Text.Printfa ~ () => PrintfType (IO a)Defined in base-4.20.2.0 · Text.PrintfHasGetter (IO a) aDefined in StateVar-1.2.2 · Data.StateVartype PrimState IO = RealWorldDefined in primitive-0.9.1.0 · Control.Monad.Primitive