GHC Core est le langage System FC dans lequel tout Haskell est traduit. La grammaire (approximative) pour Core est donnée par:
Core est étroitement lié au système F plus simple et mieux connu . Toutes les transformations effectuées par GHC au niveau Core sont des refactorisations de préservation du type de cette représentation Core, pour améliorer les performances. Et, pas si bien connu, vous pouvez écrire directement dans Core pour programmer GHC.
GHC Core s'intègre dans le pipeline du compilateur (comme en 2002, sans-LLVM et CMM):
Les principaux documents pour en savoir plus sur GHC Core sont:
Matériel connexe pouvant aider à la compréhension:
- La sortie GHC -fext-core
- J'ai passé beaucoup de temps à apprendre Core en lisant la source GHC. Certains sont décrits dans ma thèse de premier cycle de 2002, à partir de la page 16.
- De l'utilisation de l' outil ghc-core , pour générer Core dans un format que je trouve agréable.
Core à son tour est traduit en code STG, qui ressemble à quelque chose comme:
Les noms amusants dans Core sont encodés dans le "Z-encoding":
Types et types de GHC Core (d'après l'article de Tolmach):
Enfin, les primops de GHC apparaissent régulièrement dans la sortie de GHC Core, lorsque vous avez optimisé votre Haskell jusqu'aux instructions de base que GHC connaît. L'ensemble primop est donné sous la forme d'un ensemble de fonctions Core dans un fichier prétraité.