copilot-language-3.9: src/System/Mem/StableName/Dynamic.hs
-- Copyright © 2011 National Institute of Aerospace / Galois, Inc.
{-# LANGUAGE Trustworthy #-}
module System.Mem.StableName.Dynamic
( DynStableName(..)
, hashDynStableName
, makeDynStableName
) where
import System.Mem.StableName (StableName, makeStableName, hashStableName)
import Unsafe.Coerce (unsafeCoerce) -- XXX Not safe!
newtype DynStableName = DynStableName (StableName ())
makeDynStableName :: a -> IO DynStableName
makeDynStableName x =
do
stn <- makeStableName x
return (DynStableName (unsafeCoerce stn))
hashDynStableName :: DynStableName -> Int
hashDynStableName (DynStableName sn) = hashStableName sn
instance Eq DynStableName where
DynStableName sn1 == DynStableName sn2 = sn1 == sn2