我想在实例头中使用AllBF
from ,如下所示:barbies
import Barbies
import Barbies.Constraints
class MyClass a where
instance (ConstraintsB b, AllBF MyClass f b) => MyClass (Barbie b f) where
由于隐藏的种类多态性,这失败了。西蒙 说:
• 变量
k
在约束中出现的频率AllBF MyClass f b
高于在实例头部中出现的频率MyClass (Barbie b f)
(UndecidableInstances
用于允许这样做)
我想避开UndecidableInstances
这里。我尝试过的一件事是使我的实例单态为f
:
instance (ConstraintsB b, AllBF MyClass (f :: Type -> Type) b) => MyClass (Barbie b f) where
但是,这会导致另一个错误:
• 非法嵌套约束
AllBF MyClass f b
(UndecidableInstances
用于允许这样做)
天真地,我尝试内联 的定义AllBF
,但这并没有改变任何东西:
instance (ConstraintsB b, AllB (ClassF MyClass (f :: Type -> Type)) b) => MyClass (Barbie b f) where
• 非法嵌套约束
AllB (ClassF MyClass f) b
(UndecidableInstances
用于允许这样做)
有没有办法在不打开的情况下创建这个实例UndecidableInstances
?