{-# OPTIONS_HADDOCK not-home #-}
module Ersatz.Internal.StableName
( StableName
, makeStableName'
) where
import System.Mem.StableName (StableName, makeStableName)
import Unsafe.Coerce (unsafeCoerce)
makeStableName' :: a -> IO (StableName ())
makeStableName' :: a -> IO (StableName ())
makeStableName' a
a = a
a a -> IO (StableName ()) -> IO (StableName ())
`seq` (StableName a -> StableName ())
-> IO (StableName a) -> IO (StableName ())
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap StableName a -> StableName ()
forall a. StableName a -> StableName ()
coerceStableName (a -> IO (StableName a)
forall a. a -> IO (StableName a)
makeStableName a
a)
where
coerceStableName :: StableName a -> StableName ()
coerceStableName :: StableName a -> StableName ()
coerceStableName = StableName a -> StableName ()
forall a b. a -> b
unsafeCoerce