Недавно я играл с RankNTypes и спрашивал, можно ли их использовать в объявлениях экземпляров.
Вот простой пример с использованием открытых типов данных
data (Expr a, Expr b) => Add a b = Add a b deriving(Show)
instance (Expr a, Expr b) => Expr (Add a b)
instance (Evaluation a, Evaluation b) => Evaluation (Add a b) where
eval (Add x y) = eval x + eval y
Здесь мне нужно написать ограничения вроде (Оценка a, Оценка b), но в основном я просто хочу написать что-то вроде (для всех a. Оценка a) . Возможно ли это вообще?
С уважением, raichoo