2013-03-07 3 views
10

Lors de mes recherches sur le typage structurel, j'ai trouvé le message suivant décrivant how interfaces in Go are translated to method lookup tables at runtime. Le processus décrit dans le message semble très différent du reflective and generative techniques décrit pour le système de type structurel optionnel de Scala et pour l'extension White Oak du langage Java.Implémentation de typage structurel de OCaml, Scala et Go

Existe-t-il des ressources approfondies qui traitent de la manière dont le typage structurel est implémenté dans OCaml? Je suis particulièrement intéressé par toute discussion sur les optimisations ou les comparaisons de performances d'exécution avec les systèmes de type nominal.

+0

pseudo intéressant. – didierc

Répondre

8

Vous pouvez trouver une description assez détaillée des objets internes d'OCaml dans this blog post par Jake Donham. L'essentiel est que le support d'objet est principalement implémenté comme an internal library, avec seulement un peu de logique dans le compilateur lui-même (et bien sûr la logique de typage d'objet dans le système de type), principalement autour de l'envoi efficace des messages. Je ne suis pas un expert sur cette partie de la langue, mais après une inspection rapide, il semble que OCaml repose sur des recherches de méthode dans un type de méthode trié (résolu en slots dans la table de méthode), avec la mise en cache pour le méthode appelée last, et optimisation des appels statiquement connus, en particulier des appels internes dans les implémentations de méthodes. Enfin, certaines fonctions couramment utilisées (par exemple les getters et setters de variable d'instance) sont reconnues et codées spécifiquement (type impl dans la bibliothèque OO interne), pour améliorer les performances et, plus important encore, réduire la taille du code.

Questions connexes