proposal: add 'unsafeCoerce'
dmhouse at gmail.com
Tue Nov 21 10:11:18 EST 2006
On 20/11/06, Simon Marlow <simonmarhaskell at gmail.com> wrote:
> * cast that changes a phantom type, or changes a type that is not
> reflected by a part of the value,
> eg. 'unsafeCoerce (Left 3) :: Either Int a' should be fine for any 'a',
Couldn't we have the following for this case?
castEitherL :: Either a b -> Either a c
castEitherL (Left x) = Left x
castEitherL z = z
castEitherR :: Either a b -> Either c b
castEitherR (Right x) = Right x
castEitherR z = z
Not general, but it'd work in this case. And no need for unsafeCoerce.
-David House, dmhouse at gmail.com
More information about the Libraries