Est-il possible de spécifier que chaque membre d'un datakind satisfait une classe de type, de sorte que la contrainte de classe est implicite? Par exemple.Type de classe instancié sur chaque valeur d'un type de données
data AB = A | B
class Foo (a :: AB) where get :: proxy a -> String
instance Foo A where get _ = "A"
instance Foo B where get _ = "B"
-- note lack of constraint here
get' :: proxy (a :: AB) -> String
get' = get
Fondamentalement a
est un AB
donc nous sommes sûrs qu'il ya une instance de Foo
pour elle. Je le trouve improbable - où va-t-il obtenir le dictionnaire Foo
? - Mais j'ai vu de la magie dans ma journée.
J'ai fermé cela comme un double de http://stackoverflow.com/questions/32408110/datakinds-and-type-class-instances mais rouverte. La classe séparée 'Foo' contrainte à fonctionner uniquement sur' AB' pourrait laisser place à de la magie que je ne peux pas imaginer. – Cirdec