RankNTypes для объявлений экземпляров?

Недавно я играл с 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

5
задан Don Stewart 23 April 2011 в 22:13
поделиться