1

我想在实例头中使用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 bUndecidableInstances用于允许这样做)

天真地,我尝试内联 的定义AllBF,但这并没有改变任何东西:

instance (ConstraintsB b, AllB (ClassF MyClass (f :: Type -> Type)) b) => MyClass (Barbie b f) where

• 非法嵌套约束AllB (ClassF MyClass f) bUndecidableInstances用于允许这样做)

有没有办法在不打开的情况下创建这个实例UndecidableInstances

4

0 回答 0