import Prelude
-import Data.Dynamic
+import Data.Typeable
+
+#ifdef __HUGS__
+import Hugs.Stable
+#endif
#ifdef __GLASGOW_HASKELL__
-import GHC.IOBase ( IO(..) )
+import GHC.IO ( IO(..) )
import GHC.Base ( Int(..), StableName#, makeStableName#
, eqStableName#, stableNameToInt# )
the same object.
The reverse is not necessarily true: if two stable names are not
- equal, then the objects they name may still be equal.
+ equal, then the objects they name may still be equal. Note in particular
+ that `mkStableName` may return a different `StableName` after an
+ object is evaluated.
- Stable Names are similar to Stable Pointers ('Foreign.StablePtr'),
+ Stable Names are similar to Stable Pointers ("Foreign.StablePtr"),
but differ in the following ways:
- * There is no @freeStableName@ operation, unlike 'Foreign.StablePtr's.
+ * There is no @freeStableName@ operation, unlike "Foreign.StablePtr"s.
Stable names are reclaimed by the runtime system when they are no
longer needed.
#endif /* __GLASGOW_HASKELL__ */
-#include "Dynamic.h"
+#include "Typeable.h"
INSTANCE_TYPEABLE1(StableName,stableNameTc,"StableName")