1 % -----------------------------------------------------------------------------
2 % $Id: Stable.lhs,v 1.1 1999/01/26 12:24:58 simonm Exp $
4 % (c) The GHC Team, 1999
7 \section[Stable]{Module @Stable@}
12 ( StableName {-a-} -- abstract.
13 , makeStableName -- :: a -> IO (StableName a)
14 , hashStableName -- :: StableName a -> Int
16 , StablePtr {-a-} -- abstract.
17 , makeStablePtr -- :: a -> IO (StablePtr a)
18 , deRefStablePtr -- :: StablePtr a -> IO a
19 , freeStablePtr -- :: StablePtr a -> IO ()
28 -----------------------------------------------------------------------------
31 data StableName a = StableName (StableName# a)
33 makeStableName :: a -> IO (StableName a)
34 hashStableName :: StableName a -> Int
36 makeStableName a = IO $ \ s ->
37 case makeStableName# a s of (# s', sn #) -> (# s', StableName sn #)
39 hashStableName (StableName sn) = I# (stableNameToInt# sn)
41 instance Eq (StableName a) where
42 (StableName sn1) == (StableName sn2) =
43 case eqStableName# sn1 sn2 of