G'day all. On Tue, Jan 14, 2003 at 07:13:57PM +1100, Fergus Henderson wrote:
> That's not the only problem. The other problem is that because > `Typeable' instances aren't built-in, `fromDynamic' is not type-safe. > The implementation of `fromDynamic' calls `typeOf' and then if the types > match, it does an unsafe cast. If `typeOf' lies, then `fromDynamic' may > break type safety. First, an unsupported assertion: In any declarative language implementation intended to be practical, there will inevitably be a place or two where it is possible to lie to the compiler, thus potentially making it break various language rules. GHC has it here, and also in the "RULES" pragma. Mercury (to pick but one other example) has the "promise" pragma which amounts to the same thing. I surely don't need to quote it again, but I will anyway: "If you lie to your compiler, it will get its revenge." -- Henry Spencer Secondly, you're absolutely right: > Yes, it would be nice to have a built-in, type-safe, version of Dynamic > in Haskell 2. And so is Glynn: | It would also be nice if it were a little less abstract; e.g. either | exposing the constructors for Dynamic and TypeRep or providing | suitable accessors would be preferable to having to parse the result | of "show". What You Really Want(tm) is some kind of controlled reflection and meta-interpretation mechanism which makes it unnecessary for automatically derivable typeclasses like "Show", "Eq", "Enum" and "Typeable" to require special compiler support. Cheers, Andrew Bromage _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell