在GHC的管道中,有一个阶段是将Haskell源代码转换为Core,然后(不一定是紧接的下一步)将Core转换为STG。 然而,有一个问题让我无法理解 - 我们什么时候有一个“普通”代码(即纯文本),什么东西真的存在于内存中,比如抽象语法树(ASTs)?
为了使我的问题更加精确,我将它分成几部分:
1)在解析Haskell源文件阶段时,我们是否立即构建了Core语言的AST?如果没有,那么在我看来,我们必须构建完整Haskell的AST(这似乎很奇怪),然后将它们转换为Core的AST,或者首先在Core中对它们进行文本表示,然后再次调用解析来获取Core的AST。
2)几乎相同的问题适用于Core to STG转换(但在这种情况下,我认为我可以假设我们拥有的是Core的AST - 正确吗?)