http://palm-mute.livejournal.com/ ([identity profile] palm-mute.livejournal.com) wrote in [personal profile] lomeo 2009-02-05 12:59 pm (UTC)

>У нас есть значение типа a, с ним в нужные функции передаётся instance Typeable a, как из этого инстанса достать информацию, шоп скастовать это значение к типу b?

Примерно так:
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Typeable
import Unsafe.Coerce

mycast :: forall a b . (Typeable a, Typeable b) => a -> Maybe b
mycast x
    | typeOf x == typeOf (undefined :: b) = Just (unsafeCoerce x)
    | otherwise = Nothing


Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting