Использование AllBF Барби в голове экземпляра без UndecidableInstances

Я бы хотел использовать AllBF из 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?

0 ответов

Другие вопросы по тегам