The Haskell Execution Model

The STG language has a clear operational model, as well as having a declarative lambda-calculus reading. The business of the code generator is to translate the STG program into C--, and thence to machine code, but that is mere detail. From the STG program you should be able to understand:

  • What functions are in the compiled program, and what their entry and return conventions are
  • What heap objects are allocated, when, and what their layout is

GHC uses an eval/apply execution model, described in the paper How to make a fast curry: push/enter vs eval/apply. This paper is well worth reading if you are interested in this section.


Last modified 21 months ago Last modified on Mar 13, 2018 7:30:14 AM