Я думаю, что в объявлении класса
class A a where
foo :: a b
тип foo
действительно
forall b. a b
т.е. foo
должен быть своего рода независимым от типа b
,Или b
на самом деле не является частью класса A
.Так что ... я не думаю, что вы должны иметь возможность ссылаться на это?Хотя, возможно, я не понимаю ... может быть, вы могли бы опубликовать пример, где это необходимо?
Если вам нужно сохранить один и тот же тип для более чем одного метода, вы можете использовать класс многопараметрического типа:
class A a b where
foo :: a b
bar :: a b