96 votes

Comment ne dérivant de travail en Haskell?

ADTs en Haskell peut devenir instance de certaines typeclasses (comme Show, Eq) en dérivant.

data  Maybe a  =  Nothing | Just a
  deriving (Eq, Ord)

Ma question est, comment est-ce découlant de travail, c'est à dire comment Haskell savoir comment mettre en œuvre les fonctions de la dérivée typeclass pour l'découlant de l'ADT?

Aussi, pourquoi tire limitée à certaines typeclasses seulement? Pourquoi ne puis-je pas écrire mon propre typeclass qui peut être dérivé?

69voto

sclv Points 25335

La réponse courte est magique :-). C'est-à-dire que le système dérivant est cuit dans le Haskell spec, et chaque compilateur peut choisir de mettre en œuvre dans sa propre méthode. Il y a beaucoup de travail sur la façon de le rendre extensible cependant.

Tirer est un outil pour Haskell, pour vous permettre d'écrire vos propres découlant de mécanismes: http://community.haskell.org/~ndm/tirer/

GHC utilisé pour fournir une dérivables type d'extension de classe appelé "Classes Génériques", mais il est rarement utilisé, car il est relativement faible: http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/generic-classes.html

Qui a maintenant été prises, et des travaux sont en cours pour intégrer un nouveau générique découlant mécanisme décrit dans le présent document: http://www.dreixel.net/research/pdf/gdmh.pdf

Pour en savoir plus, voir:

18voto

tibbe Points 3790

À partir du Haskell 98 rapport:

Les seules classes dans le Prélude de laquelle proviennent les instances sont autorisées, Eq, Ord, Enum, Borné, d'Afficher et de Lire...

Voici la description de la façon de calculer ces classes de type: http://www.haskell.org/onlinereport/derived.html#derived-appendix

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X