performance - ris - Leitura do GHC Core




ris ghc (3)

"Uma Representação Externa para o GHC Core Language" é um documento que pode ser encontrado na instalação do ghc ( share/doc/ghc/core.pdf ) ou na internet .

Core é a linguagem intermediária do GHC. O Reading Core pode ajudá-lo a entender melhor o desempenho do seu programa. Alguém me pediu documentação ou tutoriais sobre a leitura do Core, mas não consegui encontrar muita coisa.

Qual documentação está disponível para leitura do GHC Core?

Aqui está o que eu encontrei até agora:


Embora não seja exatamente a linguagem do GHC Core, como Don menciona a linguagem STG é bastante semelhante. Eu recentemente passei pelo exercício de provar a segurança do tipo da linguagem + máquina STG, e depois descobri que conseguia entender facilmente o Core.

O texto que usei para aprender STG é bastante acessível: Implementando Lazy Functional Languages ​​no Stock Hardware: O Spineless Tagless G-machine de Simon Peyton-Jones. Grande parte do artigo trata de detalhes de implementação, mas eu recomendo a seção 4 em particular como uma explicação de cima para baixo da linguagem STG que fornece motivações para algumas das decisões de design contra-intuitivas e fornece traduções de exemplos familiares como o map .


Uma dica: Se você não se preocupa com anotações de tipos e coerções, use -ddump-simpl juntamente com a opção -dsuppress-all . A saída do Core deve ser muito mais legível.







ghc