Create Data.Coerce (#8745)
authorAustin Seipp <austin@well-typed.com>
Fri, 28 Feb 2014 17:50:30 +0000 (11:50 -0600)
committerAustin Seipp <austin@well-typed.com>
Fri, 28 Feb 2014 21:42:15 +0000 (15:42 -0600)
Data.Coerce is a Trustworthy module which safely exports both
`Coercible` and `coerce` for use by users, as it can now be considered
safe under role checking.

See the ticket for details.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Data/Coerce.hs [new file with mode: 0644]
GHC/Exts.hs
base.cabal

diff --git a/Data/Coerce.hs b/Data/Coerce.hs
new file mode 100644 (file)
index 0000000..93d5e19
--- /dev/null
@@ -0,0 +1,23 @@
+{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE StandaloneDeriving #-}
+
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Data.Coerce
+-- Copyright   :  (c) The University of Glasgow 2001
+-- License     :  BSD-style (see the file libraries/base/LICENSE)
+--
+-- Maintainer  :  libraries@haskell.org
+-- Stability   :  provisional
+-- Portability :  portable
+--
+-- Safe coercions between data types.
+--
+-----------------------------------------------------------------------------
+
+module Data.Coerce
+        ( -- * Safe coercions
+          coerce, Coercible,
+        ) where
+import GHC.Prim (coerce, Coercible)
index 299adab..62f1951 100755 (executable)
@@ -46,7 +46,7 @@ module GHC.Exts
         lazy, inline,
 
         -- * Safe coercions
-        GHC.Prim.coerce, GHC.Prim.Coercible,
+        Data.Coerce.coerce, Data.Coerce.Coercible,
 
         -- * Transform comprehensions
         Down(..), groupWith, sortWith, the,
@@ -70,12 +70,12 @@ module GHC.Exts
 import Prelude
 
 import GHC.Prim hiding (coerce, Coercible)
-import qualified GHC.Prim
-import GHC.Base hiding (coerce, Coercible)
+import GHC.Base hiding (coerce, Coercible) -- implicitly comes from GHC.Prim
 import GHC.Word
 import GHC.Int
 import GHC.Ptr
 import GHC.Stack
+import qualified Data.Coerce
 import Data.String
 import Data.List
 import Data.Data
index 5c04513..f8937dc 100644 (file)
@@ -118,6 +118,7 @@ Library
         Data.Bits
         Data.Bool
         Data.Char
+        Data.Coerce
         Data.Complex
         Data.Data
         Data.Dynamic