2010-01-18 5 views
2

Je joue avec des enveloppes de New Type pour mes index pour éviter les bugs, et j'ai un code comme ceci:Dérivation un type et ses dépendances

{-# LANGUAGE GeneralizedNewtypeDeriving #-} 

newtype PersonIdx = PersonIdx Int 
    deriving (Enum, Eq, Integral, Num, Ord, Real, Show) 

Pour tirer Integral, il faut en tirer toutes ses dépendances comme bien (d'où la liste ci-dessus de type-classes).

Y at-il un moyen de lui faire dériver toutes les dépendances de Integral avec elle? J'imagine quelque chose comme:

newtype PersonIdx = PersonIdx Int 
    deriving (Integral(..)) 

Répondre

6

Non, il n'y a pas de raccourci. Vous devrez dériver explicitement de toutes les classes de caractères dépendantes, mais vous pouvez facilement les trouver en tapant :i Integral dans ghci.

+2

Je me demande s'il y a une raison de principe pour cela, ou simplement que personne n'a implémenté le raccourci en question. – Novelocrat

+0

@Dario: bien que l'on puisse probablement créer quelques raccourcis TH .. – yairchu

+0

C'est un peu dans la philosophie de Haskell que tout soit explicite. Il y a très peu de "raccourcis" dans la langue, et cet exemple ne fait pas exception. – Martijn

Questions connexes