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

Reply via email to