Using GHC Core as a Language Target

Iavor Diatchki iavor.diatchki at
Thu Oct 25 18:20:13 UTC 2018


I have not done what you are asking, but here is how I'd approach the

1. Assuming you already have some Core, you'd have to figure out how to
include it with the rest of the GHC pipeline:
    * A lot of the code that glues everything together is in
`compiler/main`. Modules of interest seem to be `DriverPipeline`,
`HscMain`, and `PipelineMoand`
    * A quick looks suggests that maybe you want to call `hscGenHardCode`
in `HscMain`, with your core program inside the `CgGuts` argument.
    * Exactly how you setup things probably depends on how much of the rest
of the Haskell ecosystem you are trying to integrate with (separate
compilation, avoiding recompilation, support for packages, etc.)

2. The syntax for Core is in `compiler/coreSyn`, with the basic AST being
in module `CoreSyn`.   Module `MkCore` has a lot of helpers for working
with core syntax.

3. The "desugarer" (in `compiler/deSugar`) is the GHC phase that translates
the front end syntax (hsSyn) into core, so that should have lots of
examples of how to generate core.


On Mon, Oct 22, 2018 at 1:46 AM Ara Adkins <me at> wrote:

> Hey All,
> I was chatting to SPJ about the possibility of using GHC Core + the rest
> of the GHC compilation pipeline as a target for a functional language, and
> he mentioned that asking here would likely be more productive when it comes
> to the GHC API.
> I'm wondering where the best place would be for me to look in the API for
> building core expressions, and also whether it is possible to trigger the
> GHC code-generation pipeline from the core stage onwards.
> Best,
> Ara
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the ghc-devs mailing list