-- | Collection of dynamic type meta data and casting utilities. -- -- The template haskell funtions in this module expect to find symbols exported from this module under 'Data.Type'. Thus change: -- -- > import qualified Data.Type as T -- -- Into: -- -- > import qualified Data.Type -- > import qualified Data.Type as T -- -- It would be possible to drop this requirement, but currently not without bloating the library unnecessarily. -- -- > import Data.Type -- > -- > newtype T m a = T (m a) -- > deriveMeta ''T -- > -- > hello = cast . T $ print "Hello world" :: Meta a => Maybe a -- > main = case hello of -- > Just (T m) -> m -- > _ -> print "Impossible!" -- -- Will print @"Hello world"@. module Data.Type ( module Data.Type.Internal.Framework , module Data.Type.Internal.Helpers , module Data.Type.Internal.Derive , module Data.Type.Internal.Body ) where import Data.Type.Internal.Framework import Data.Type.Internal.Body import Data.Type.Internal.Derive import Data.Type.Internal.Helpers import Data.Type.Internal.Instances