我想在实例头中使用AllBFfrom ,如下所示: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?