25 Nov
2004
25 Nov
'04
9:19 a.m.
Lennart wrote (snipped):
An "easy" way to prove it is to provide an equivalent implementation that uses only pure functions. As far as I remember Control.Monad.ST can be written purely. And I think the same is true for Data.Dynamic.
I don't see how it can be, since you can use Data.Dynamic to provide an unsafe function cast : a -> b newtype UnsafeCast a = UnsafeCast a instance Typeable (UnsafeCast a) where typeOf _ = mkAppTy (mkTyCon "") [] cast :: a -> b cast a = let Just (UnsafeCast b) = fromDynamic (toDyn (UnsafeCast a)) in b