IOError vs. Exception vs. IOException

Simon Marlow
Mon, 4 Nov 2002 13:00:39 -0000

> [redirecting to libraries]
> Two (mostly) independent proposals:
> 1) Move bracket and bracket_ from System.IO (or GHC.Exception) to
>    haskell98/IO.hs.  These two should now never be used anyway (except
>    in all-H98 programs), and this would save users of the new=20
> libraries
>    from having to hide them.
> 2) Define
> 	type IOError =3D IOException	-- was Exception
>    (or vice versa), leave the type of Prelude.ioError as IOError -> IO
>    but add to Control.Exception
> 	throwIO :: Exception -> IO a
> If both are done, the only overlap seen by users of the new libraries
> is Prelude.catch vs Control.Exception.catch and System.IO.try vs
> Control.Exception.try.  In each case there's a type distinction
> reflecting the semantic distinction.

Our feeling over here is that this is an unforced change, so in
isolation it probably wouldn't be worthwhile.  It'll break some code,
and the awkward squad paper will have to be updated to comply (although
we just noticed it is already wrong about the behaviour of

However, if there's concensus that folk would prefer the alternate
definition of IOError, then we're happy to go along with it.