
On Fri, Mar 02, 2007 at 07:10:32PM -0500, Isaac Dupree wrote:
Stefan O'Rear wrote:
the current type:
data Dynamic = Dynamic TypeRep Obj
the new type, if lucky:
Meaning the one with "Typeable a =>" instead of TypeRep?
Yes
data Dynamic = Dynamic !(a -> TypeRep) a
if unlucky:
data TypeableD a = TypeableD (a -> TypeRep) data Dynamic = Dynamic (TypeableD a) a
either way, the typeclass approach gives a lot more boxing.
Yes, that's why I don't really propose that, because it's probably inefficient (for dictionary-passing-based implementations anyway), just that the "Obj" in Dynamic's constructor should be, type-system-wise, an existential instead (which I don't think will change the runtime representation, but I don't know how to test that).
-ddump-cmm, and a 10x magnifying glass. Stefan