[GHC] #14998: Sort out the strictness mess for exceptions
GHC
ghc-devs at haskell.org
Thu Apr 5 16:14:38 UTC 2018
#14998: Sort out the strictness mess for exceptions
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.4.3
Component: Compiler | Version: 8.2.2
Resolution: | Keywords: Exceptions
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by sgraf):
Re Item 2: A net loss (0.2% Allocs, 0.1% Instr). `reverse-complement`
allocates 11.6% more, `sphere` executes 4.4% more instructions, `binary-
trees` 0.9% less.
This was the diff:
{{{
diff --git a/libraries/base/GHC/IO.hs b/libraries/base/GHC/IO.hs
index 118ebea..554b4e3 100644
--- a/libraries/base/GHC/IO.hs
+++ b/libraries/base/GHC/IO.hs
@@ -142,7 +142,7 @@ have to work around that in the definition of catch
below).
-- @catchException undefined b == _|_ at . See #exceptions_and_strictness#
-- for details.
catchException :: Exception e => IO a -> (e -> IO a) -> IO a
-catchException !io handler = catch io handler
+catchException io handler = catch io handler
-- | This is the simplest of the exception-catching functions. It
-- takes a single argument, runs it, and if an exception is raised
@@ -194,7 +194,7 @@ catch (IO io) handler = IO $ catch# io handler'
-- @catchAny undefined b == _|_ at . See #exceptions_and_strictness# for
-- details.
catchAny :: IO a -> (forall e . Exception e => e -> IO a) -> IO a
-catchAny !(IO io) handler = IO $ catch# io handler'
+catchAny (IO io) handler = IO $ catch# io handler'
where handler' (SomeException e) = unIO (handler e)
-- Using catchException here means that if `m` throws an
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14998#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list