Je ne peux pas trouver un tutoriel ou une bonne description de n'importe où. Quelqu'un peut-il me donner quelques conseils?
Réponses
Trop de publicités?Data.Typeable
est un encodage d'un bien connu (voir par exemple Harper) pour la mise en œuvre de retard (dynamique) type de vérification dans un langage statiquement typé -- à l'aide d'un universel type.
Un tel type de encapsule le code pour le type de vérification ne serait pas réussir, jusqu'à une phase ultérieure. Plutôt que de rejeter le programme que mal tapé, le compilateur passe pour le contrôle d'exécution.
Le style originaire de Abadi et coll., et développé pour Haskell par Cheney et Hinze comme un wrapper pour représenter tous les types de dynamiques, avec l' Typeable
classe apparaissant dans le cadre de la SYB travail du SPJ et Lammel.
Référence
- Martin Abadi, Luca Cardelli, Benjamin Pierce et Gordon Plotkin, "Typage Dynamique dans un Langage Statiquement Typé", ACM Transactions sur les Langages de Programmation et des Systèmes (TOPLAS), 1991.
- James Cheney et Ralf Hinze, "Une légère mise en œuvre de génériques et de la dynamique", Haskell '02: actes de la 2002 ACM SIGPLAN Atelier sur Haskell, 2002.
- Lammel, Ralf et Jones, Simon Peyton, "Rebut de votre passe-partout: une pratique de conception de modèle pour le générique de programmation, TLDI '03: actes de l'2003 ACM SIGPLAN Atelier International sur les Types dans les Langages de Conception et de mise en Œuvre, 2003
- Harper, 2011, Bases Concrètes pour les Langages de Programmation.
Même dans les livres de texte: les types de dynamiques (avec typable représentations) sont les langages statiquement typés avec un seul type, Harper ch 20:
C'est une bibliothèque qui permet, entre autres choses, les types d'affichage. Si un type a
est déclarée Typeable
, alors vous pouvez obtenir son nom à l'aide d' show $ typeOf x
où x
est une valeur de type a
. Il dispose également d' limitée de conversion de type.
(C'est un peu comme C++RTTI ou de langages dynamiques de réflexion.)
L'une des premières descriptions que j'ai pu trouver un Data.Typeable
-comme la bibliothèque pour Haskell est par John Peterson à partir de 1992: http://www.cs.yale.edu/publications/techreports/tr1022.pdf
La première "officielle" de papier que je sais de l'introduction de la réelle Data.Typeable
bibliothèque est le premier de la Ferraille Votre passe-partout de papier à partir de 2003: http://research.microsoft.com/en-us/um/people/simonpj/Papers/hmap/index.htm
Je suis sûr qu'il ya beaucoup d'intervenant de l'histoire que quelqu'un ici peut cadrer avec!
Les Données.Typable classe est utilisé principalement pour la programmation générique dans la Ferraille Votre passe-partout (SYB) style. Voir aussi les Données.Données
L'idée est que SYB définit une collection combinators pour effectuer des opérations telles que l'impression, du comptage, de la recherche, substiting, etc de manière uniforme sur une variété de l'utilisateur créé types. L' Typeable
typeclass fournit le nécessaire de plomberie.
Moderne GHC, vous pouvez juste dire deriving Data.Typeable
lors de la définition de votre propre type afin de le doter des instances.