Index: Dynamic.hs =================================================================== RCS file: /cvs/fptools/libraries/base/Data/Dynamic.hs,v retrieving revision 1.28 diff -u -r1.28 Dynamic.hs --- Dynamic.hs 11 Jan 2005 16:04:10 -0000 1.28 +++ Dynamic.hs 4 Mar 2005 07:23:16 -0000 @@ -34,7 +34,8 @@ -- * Applying functions of dynamic type dynApply, - dynApp + dynApp, + dynTypeRep ) where @@ -162,3 +163,8 @@ Nothing -> error ("Type error in dynamic application.\n" ++ "Can't apply function " ++ show f ++ " to argument " ++ show x) + +dynTypeRep :: Dynamic -> TypeRep +dynTypeRep (Dynamic tr _) = tr + + Index: Typeable.hs =================================================================== RCS file: /cvs/fptools/libraries/base/Data/Typeable.hs,v retrieving revision 1.34 diff -u -r1.34 Typeable.hs --- Typeable.hs 2 Feb 2005 14:54:18 -0000 1.34 +++ Typeable.hs 4 Mar 2005 07:23:16 -0000 @@ -77,7 +77,8 @@ typeOf3Default, -- :: (Typeable4 t, Typeable a) => t a b c d -> TypeRep typeOf4Default, -- :: (Typeable5 t, Typeable a) => t a b c d e -> TypeRep typeOf5Default, -- :: (Typeable6 t, Typeable a) => t a b c d e f -> TypeRep - typeOf6Default -- :: (Typeable7 t, Typeable a) => t a b c d e f g -> TypeRep + typeOf6Default, -- :: (Typeable7 t, Typeable a) => t a b c d e f g -> TypeRep + typeRepIndex ) where @@ -652,3 +653,11 @@ appKeys :: Key -> [Key] -> Key appKeys k ks = foldl appKey k ks + +-- | This can be used for creation of efficient maps or hash tables based on TypeReps. +-- It is in IO because the numbering may differ between runs of a program. + + +typeRepIndex :: TypeRep -> IO Int +typeRepIndex (TypeRep (Key i) _ _) = return i +