通过unsafeCoerce克服skolemization

时间:2016-04-25 22:34:15

标签: haskell ambiguous type-deduction

有没有什么方法可以通过unsafeCoerce来克服重大问题?请考虑以下情形:

data BlackBox = forall a. BlackBox a

mkBlackBox :: a -> (BlackBox, Proxy a)
mkBlackBox x = (BlackBox x, Proxy)

getBlackBox :: Proxy a -> BlackBox -> a
getBlackBox Proxy (BlackBox x) = unsafeCoerce x

如果您运行此代码,则会发现如果unsafeCoerce :: a1 -> bBlackBox :: a -> BlackBox,则a1不会与a统一。是否有任何希望将它们结合在一起,并假设它有效?

0 个答案:

没有答案