X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Data%2FTypeable.hs;h=d7fd0084c503bd350658a1c9175035e34b964ffc;hb=f77ec15be0f622df81980b757244d3401833c926;hp=3e5b7c2011db8cd70d1776818058523bee0060d6;hpb=e339d27dc714a2ddd5043ead2a359b4f6d45e9a7;p=ghc-base.git diff --git a/Data/Typeable.hs b/Data/Typeable.hs index 3e5b7c2..d7fd008 100644 --- a/Data/Typeable.hs +++ b/Data/Typeable.hs @@ -9,15 +9,24 @@ -- Stability : experimental -- Portability : portable -- --- The Typeable class reifies types to some extent by associating type +-- The 'Typeable' class reifies types to some extent by associating type -- representations to types. These type representations can be compared, -- and one can in turn define a type-safe cast operation. To this end, -- an unsafe cast is guarded by a test for type (representation) --- equivalence. The module Data.Dynamic uses Typeable for an --- implementation of dynamics. The module Data.Generics uses Typeable +-- equivalence. The module "Data.Dynamic" uses Typeable for an +-- implementation of dynamics. The module "Data.Generics" uses Typeable -- and type-safe cast (but not dynamics) to support the \"Scrap your -- boilerplate\" style of generic programming. -- +-- Note, only relevant if you use dynamic linking. If you have a program +-- that is statically linked with Data.Typeable, and then dynamically link +-- a program that also uses Data.Typeable, you'll get two copies of the module. +-- That's fine, but behind the scenes, the module uses a mutable variable to +-- allocate unique Ids to type constructors. So in the situation described, +-- there'll be two separate Id allocators, which aren't comparable to each other. +-- This can lead to chaos. (It's a bug that we will fix.) None of +-- this matters if you aren't using dynamic linking. +-- ----------------------------------------------------------------------------- module Data.Typeable @@ -478,7 +487,7 @@ instance Typeable6 (,,,,,) where typeOf6 tu = mkTyConApp tup6Tc [] tup7Tc :: TyCon -tup7Tc = mkTyCon ",,,,," +tup7Tc = mkTyCon ",,,,,," instance Typeable7 (,,,,,,) where typeOf7 tu = mkTyConApp tup7Tc [] @@ -518,6 +527,7 @@ INSTANCE_TYPEABLE0(TypeRep,typeRepTc,"TypeRep") #ifdef __GLASGOW_HASKELL__ INSTANCE_TYPEABLE0(Word,wordTc,"Word" ) +INSTANCE_TYPEABLE1(MVar,mvarTc,"MVar" ) #endif ---------------------------------------------