put 'unsafeCoerce' in a standard location
authorMalcolm.Wallace@cs.york.ac.uk <unknown>
Mon, 13 Nov 2006 11:41:03 +0000 (11:41 +0000)
committerMalcolm.Wallace@cs.york.ac.uk <unknown>
Mon, 13 Nov 2006 11:41:03 +0000 (11:41 +0000)
Unsafe/Coerce.hs [new file with mode: 0644]

diff --git a/Unsafe/Coerce.hs b/Unsafe/Coerce.hs
new file mode 100644 (file)
index 0000000..a90b149
--- /dev/null
@@ -0,0 +1,30 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module      :  Unsafe.Coerce
+-- Copyright   :  Malcolm Wallace 2006
+-- License     :  BSD-style (see the LICENSE file in the distribution)
+--
+-- Maintainer  :  libraries@haskell.org
+-- Stability   :  experimental
+-- Portability :  portable
+--
+-- The highly unsafe primitive 'unsafeCoerce' converts a value from any
+-- type to any other type.  Needless to say, if you use this function,
+-- it is your responsibility to ensure that the old and new types have
+-- identical internal representations, in order to prevent runtime corruption.
+
+module Unsafe.Coerce (unsafeCoerce) where
+
+#if defined(__GLASGOW_HASKELL__)
+import GHC.Base (unsafeCoerce#)
+unsafeCoerce :: a -> b
+unsafeCoerce = unsafeCoerce#
+#endif
+
+#if defined(__NHC__)
+import NonStdUnsafeCoerce (unsafeCoerce)
+#endif
+
+#if defined(__HUGS__)
+import Hugs.Base (unsafeCoerce)
+#endif