GHC Core es el lenguaje de System FC al que se traduce todo Haskell. La gramática (aproximada) para Core viene dada por:
Core está estrechamente relacionado con el Sistema F más simple y mejor conocido . Todas las transformaciones que GHC realiza en el nivel Core son refactorizaciones de preservación de tipo de esta representación Core, para mejorar el rendimiento. Y, no tan conocido, puede escribir directamente en Core para programar GHC.
GHC Core encaja en la tubería del compilador (como lo fue en 2002, sin LLVM y CMM):
Los documentos principales para aprender sobre GHC Core son:
Material relacionado que puede ayudar a comprender:
- La salida GHC -fext-core
- Pasé mucho tiempo aprendiendo Core leyendo la fuente de GHC. Algunos se describen en mi tesis de pregrado de 2002, de la página 16.
- Desde el uso de la herramienta ghc-core , para generar Core en un formato que me parece agradable.
Core a su vez se traduce en código STG, que se parece a:
Los nombres divertidos en Core están codificados en la "codificación Z":
Tipos y clases de GHC Core (del artículo de Tolmach):
Finalmente, los primops de GHC aparecen regularmente en la salida de GHC Core, cuando ha optimizado su Haskell a las instrucciones básicas que GHC conoce. El conjunto primop se proporciona como un conjunto de funciones principales en un archivo preprocesado.