3

如果我有一个单射类型族和类型等价证明,我怎样才能得到参数等价的证明?

我能想出的最好的 uses unsafeCoerce,这对我来说似乎是合理的,因为 TypeFamily 是单射的,但是......函数本身不会检查TypeFamily 是否是单射的,所以,这可能是一个来源错误。我也可能是错的,即使也不是安全使用unsafeCoerce.

type family MyTF a = b | b -> a
...

coerceTypeFamily :: (MyTF a :~: MyTF b) -> (a :~: b)
coerceTypeFamily Refl = unsafeCoerce Refl
4

0 回答 0