1{-# LANGUAGE RankNTypes #-} 2module GenericTree where 3 4import Data.Typeable 5 6dynRep :: (Typeable a) => a -> (TypeRep, forall b. (Typeable b) => b -> (Maybe b)) 7dynRep a = (typeOf a, \_ -> cast a) 8