By definition (sec. 7.3 in the H98 report), userError raises an
IOError, so Prelude.catch should catch UserError exceptions, too.
Apart from not conforming to the report, without this patch GHC's
typechecker falls straight on its face.
% ------------------------------------------------------------------------------
-% $Id: PrelException.lhs,v 1.22 2000/07/07 11:03:58 simonmar Exp $
+% $Id: PrelException.lhs,v 1.23 2000/07/09 16:00:55 panne Exp $
%
% (c) The University of Glasgow, 1998-2000
%
catch :: IO a -> (Exception -> IO a) -> IO a
catch m k = catchException m handler
where handler err@(IOException _) = k err
+ handler err@(UserError _) = k err
handler other = throw other
\end{code}