[GHC] #9724: reexport IsList class from a trustworthy module

GHC ghc-devs at haskell.org
Sat Oct 25 18:42:53 UTC 2014


#9724: reexport IsList class from a trustworthy module
-------------------------------------+-------------------------------------
       Reporter:  int-e              |                   Owner:  ekmett
           Type:  feature request    |                  Status:  new
       Priority:  normal             |               Milestone:
      Component:  Core Libraries     |                 Version:  7.8.3
       Keywords:                     |        Operating System:
   Architecture:  Unknown/Multiple   |  Unknown/Multiple
     Difficulty:  Unknown            |         Type of failure:
     Blocked By:                     |  None/Unknown
Related Tickets:                     |               Test Case:
                                     |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------
 ==== Motivation

 GHC's Safe Haskell extension relies to a large extent on inferring safety
 of modules automatically. As a concrete example,
 [[http://hackage.haskell.org/package/data-default|data-default]] used to
 be inferred safe.

 This is no longer the case, because
 [[http://hackage.haskell.org/package/dlist-0.7.1|dlist-0.7.1]] added an
 {{{IsList}}} instance for difference lists. The only way to do that
 currently is to import the relevant parts of {{{GHC.Exts}}}, and that
 module is not safe.

 Of course the resulting non-safety of the {{{Data.DList}}} module can be
 fixed by adding a {{{TrustWorthy}}} pragma to the module and trusting the
 {{{dlist}}} package. But that is unsatisfactory, because there is nothing
 unsafe about providing an instance for the {{{IsList}}} class. This issue
 is bound to pop up in other packages as well.

 ==== Proposed Solution

 (this is one of many possibilities)

 Add a {{{GHC.Exts.Safe}}} module that is marked {{{TrustWorthy}}} and
 reexports the {{{IsList}}} class, and possibly other things from
 {{{GHC.Exts}}} that are safe to use.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9724>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list