
#16119: Hide the gnarly levity polymorphism stuff in the signatures of `undefined`, `throw`, etc -------------------------------------+------------------------------------- Reporter: jberryman | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: Component: libraries/base | Version: 8.6.3 Resolution: | Keywords: 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 harpocrates): This is gonna be easily fixable once Hi Haddock lands. See https://github.com/haskell/haddock/pull/941 in particular. There's going to be a module-level Haddock option for controlling whether levity polymorphic signatures in that module get defaulted or not. If we want `throw :: Exception e => e -> a`, we'll have to add `{-# OPTIONS_HADDOCK print-runtime-reps #-}` to the top of `Control.Exception.Base`. Personally, I'd lean towards leaving the `throw`'s levity polymorphic signature in `Control.Exception.Base` and defaulting the re-export in `Control.Exception`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16119#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler