2

是否可以使用 unsafeCoerce (或其他一些不安全的功能)来“弥补”例如类型的 Typeable 约束?即,将类型从 a 更改forall v. v为存在forall v. Typeable v => v

我的情况是,我有一些数据类型/函数可以处理所有类型a,但确实需要调用typeOf和/或调用toDyn它们。结果不会破坏参数性,但不可能说服类型检查器。

准确地说,我需要将某些类型转换为Dynamic然后再转换回来。然而,目前的要求Typeable阻止了诸如Functor,Applicative等类型类的实现。

(我知道存在另一种称为“约束归一化深度嵌入”的技术,以允许需要约束的类型仍然实现这些类型的类型。但是,这种技术不适用于包含循环的数据类型,因为降低操作将无限循环。)

那么有没有办法说服类型检查员在这里信任我呢?即使它很不安全?

4

0 回答 0