在Data.Typeable有一个函数转换
cast :: forall a b. (Typeable a, Typeable b) => a -> Maybe b
Run Code Online (Sandbox Code Playgroud)
和一个函数 eqT
eqT :: forall a b. (Typeable a, Typeable b) => Maybe (a :~: b)
Run Code Online (Sandbox Code Playgroud)
它们在效果和实现上似乎几乎相同,我想知道 eqT 的描述是否有任何实际意义:提取两种类型相等的见证。