O GHC Core é o idioma do System FC para o qual todo o Haskell é traduzido. A gramática (aproximada) do Core é dada por:
O Core está intimamente relacionado ao Sistema F mais simples e mais conhecido . Todas as transformações que o GHC realiza no nível Core são refatorações de preservação de tipo dessa representação Core, para melhorar o desempenho. E, não tão conhecido, você pode escrever diretamente no Core para programar o GHC.
O GHC Core se encaixa no pipeline do compilador (como em 2002, sans-LLVM e CMM):
Os documentos principais para aprender sobre o GHC Core são:
Material relacionado que pode ajudar a entender:
- A saída GHC -fext-core
- Passei muito tempo aprendendo o Core lendo a fonte do GHC. Alguns são descritos em minha tese de graduação de 2002, na página 16.
- Ao usar a ferramenta ghc-core , para gerar o Core em um formato que eu acho agradável.
O Core, por sua vez, é traduzido para o código STG, que se parece com:
Os nomes engraçados no Core são codificados na "codificação Z":
Tipos e tipos do GHC Core (do artigo de Tolmach):
Finalmente, as instruções do GHC aparecem regularmente na saída do GHC Core, quando você otimiza seu Haskell com as instruções básicas que o GHC conhece. O conjunto de primop é fornecido como um conjunto de funções principais em um arquivo pré-processado.