module Data.Object.Dynamic.Underlying where
import Data.Dynamic
import Data.Object.Dynamic.Type
class (Typeable (UnderlyingReal a)) => UseReal a where
type UnderlyingReal a :: *
instance UseReal u => UseReal (Object u) where
type UnderlyingReal (Object u) = UnderlyingReal u
class (Typeable (UnderlyingInteger a)) => UseInteger a where
type UnderlyingInteger a :: *
instance UseInteger u => UseInteger (Object u) where
type UnderlyingInteger (Object u) = UnderlyingInteger u
class (Typeable (UnderlyingString a)) => UseString a where
type UnderlyingString a :: *
instance UseString u => UseString (Object u) where
type UnderlyingString (Object u) = UnderlyingString u