Можно ли требовать, чтобы ассоциированный синоним типа какого-либо класса являлся экземпляром какого-либо другого класса? Например. что-то вроде следующего кода (не компилируется!):Требовать экземпляр typeclass для связанного с haskell типа синонима
class Test a where
type Foo a
instance Show (Foo a)
я мог бы рассчитывать на то, что Foo a
является Show
состоянии независимо от того, о котором идет речь в частности a
.
Очевидно, что я могу просто добавить еще несколько методов для класса, чтобы обеспечить операции, которые я хочу на Foo a
, но было бы неплохо иметь возможность повторно использовать существующие классы.
Вы можете написать 'класса Show (Foo а) => Тестирование а, где тип Foo a', но я не знаю, можно ли для эмуляции чего-то типа 'class (forall a. Show (Foo a)) => Проверить a где type Foo a'. – user3237465