eqT 而不是强制转换的用例是什么?

Dav*_*Fox 5 haskell

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 的描述是否有任何实际意义:提取两种类型相等的见证