Skip to content

reexport IsList class from a trustworthy module

Motivation

GHC's Safe Haskell extension relies to a large extent on inferring safety of modules automatically. As a concrete example, data-default used to be inferred safe.

This is no longer the case, because 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.

Trac metadata
Trac field Value
Version 7.8.3
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Core Libraries
Test case
Differential revisions
BlockedBy
Related
Blocking
CC core-libraries-committee@haskell.org
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information