+-----------------------------------------------------------------------------
+-- |
+-- 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