Я использую
{-# LANGUAGE TypeFamilies, DataKinds, ConstraintKinds, ExistentialQuantification #-}
и набрал следующий код:
class NoConstraint x where {}
instance forall x. NoConstraint x where {}
type family Classes (c :: [* -> Constraint]) (x :: *) :: Constraint
type instance Classes [] x = NoConstraint x
type instance Classes (h : t) x = (h x, Classes t x)
Однако GHC (i) отклоняет это с помощью:
Not in scope: type constructor or class `Constraint'
Похоже, однако, что это должно быть полностью возможно.
Редактировать: Теперь я обнаружил, что есть и другие проблемы с вышеуказанным кодом.
Однако, это остаетсяправильный вопрос.