203 votes

Lecture GHC Core

De base est de GHC l'intermédiaire de la langue. Lecture de Base peut vous aider à mieux comprendre les performances de votre programme. Quelqu'un m'a demandé de la documentation ou des tutoriels sur la lecture de Base, mais je ne pouvais pas trouver beaucoup.

Quelle documentation est disponible pour la lecture de Noyau de GHC?

Voici ce que j'ai trouvé pour l'instant:

282voto

Don Stewart Points 94361

GHC de Base est le Système le FC langue dans laquelle tous les Haskell est traduit. L' (approximative) de la grammaire de Base est donnée par:

enter image description here

Core est étroitement liée à la plus simple et la mieux connue du Système F. Toutes les transformations de GHC n'sur le niveau de Base sont le type de préserver les refactorings de ce Noyau de la représentation, afin d'améliorer les performances. Et, pas si bien connu, vous pouvez écrire directement au Cœur du programme de GHC.

GHC de Base s'inscrit dans le compilateur de canalisation (comme il l'a été en 2002, sans-LLVM et CMM):

enter image description here

Les documents primaires à apprendre à propos de GHC de Base sont:

Matériel connexe qui peuvent aider à la compréhension:

  • Le GHC -fext-core de sortie
  • J'ai passé beaucoup de temps à l'apprentissage de Base en lecture GHC source. Certains est décrit dans mon premier cycle de thèse à partir de 2002, à partir de la page 16.
  • De l'utilisation de l' ghc-core outil pour générer de Base dans un format que je trouve agréable.

Core est à son tour traduit en STG code, qui ressemble à quelque chose comme:

enter image description here

Le plus drôle, dans les noms de Base sont codés dans le "Z"codage:

enter image description here

GHC Core types et les genres (à partir de Tolmach du papier):

enter image description here

Enfin, GHC du primops apparaissent régulièrement dans le Noyau de GHC sortie, quand vous avez optimisé votre Haskell vers le bas pour les instructions de base de GHC connaît. Le primop ensemble est donné comme un ensemble de fonctions de Base dans un pré-traitées fichier.

25voto

nominolo Points 3895

Un conseil: Si vous ne tenez pas compte des annotations de type et des coercions, utilisez -ddump-simpl avec l'option -dsuppress-all . La sortie Core devrait être beaucoup plus lisible.

8voto

acfoltzer Points 3834

Bien que n'étant pas exactement le GHC de Base de la langue, que Ne mentionne le STG langue est assez similaire. Je suis récemment allé à travers l'exercice de la preuve de la sécurité de l'STG langue + la machine, et ensuite j'ai trouvé que je pouvais comprendre Core facilement.

Le texte que j'ai utilisé pour apprendre la STG est tout à fait accessible: la mise en Œuvre de Paresseux Langages Fonctionnels sur le Stock de Matériel: La Veules sans étiquette G-machine par Simon Peyton-Jones. Une grande partie de l'étude concerne la mise en œuvre des détails, mais je vous recommande l'article 4, en particulier, en tant que de haut en bas de l'explication de la STG langue qui donne les motivations de certains de la contre-intuitive, les décisions de conception et fournit des traductions des exemples familiers comme map.

3voto

Roman Cheplyaka Points 15145

"Une représentation externe pour la langue principale de GHC" est un document qui peut être trouvé dans l'installation de ghc ( share/doc/ghc/core.pdf ) ou sur internet .

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