It would be interesting to see when you HAVE to use dynamics, e.g. when no other solution is possible in Haskell...
You're quite right. You should only be allowed to derive Typeable.
(Which could be arranged by hiding the methods of typeable.)
On Thu, Feb 12, 2009 at 6:24 PM, Jonathan Cast
<jonathanccast@fastmail.fm> wrote:
> On Thu, 2009-02-12 at 19:04 +0100, Lennart Augustsson wrote:
>> They are not unsafe in the way unsafePerformIO is,
>
> I beg permission to demur:
>
> newtype Unsafe alpha = Unsafe { unUnsafe :: alpha }
> instance Typeable (Unsafe alpha) where
> typeOf _ = typeOf ()
>
> pseudoSafeCoerce :: alpha -> Maybe beta
> pseudoSafeCoerce = fmap unUnsafe . cast . Unsafe
>
> Note that
>
> pseudoSafeCoerce = Just . unsafeCoerce
>
>> but I regard them
>> as a last resort in certain situations.
>> Still, in those situations they are very useful.
>
> But I would agree with both of these. As long as you *derive* Typeable.
>
> jcc
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe