True multi stage Haskell

Matthew Pickering matthewtpickering at
Fri Nov 17 18:41:43 UTC 2017

Hi Tim,

When you say "multi-stage programming language" do you have a specific
calculus in mind? I think this can mean lots of different things to
different people.

This is a topic I have been interested in recently.



On Fri, Nov 17, 2017 at 6:05 PM, Tim Sheard <sheard at> wrote:
> After many years of hoping someone else would do this, I would like to
> make GHC into a true multi-stage programming language. Here is how I
> thought I might approach this.
> 1) Use the GHC as a library module.
> 2) Use the LLVM backend.
> I have no experience with either of these tools.
> Lets start simple, How would I write functions like
> compile :: String -> IO PtrToLLVMCode  -- where the string is a small
> Haskell program.
> llvmCompile :: PtrToLLVMCode -> IO PtrToMachineCode
> jumpTo:: PtrToMachineCode -> IO ans   -- where ans is the "type" of the
> string.
> Any thoughts on how to get started? What papers to read, examples to look
> at?
> I'd love to move to some more disciplined input type, a sort of (mono) typed
> program
> representation (with similar complexity) to Template Haskell Exp type.
> where (Exp t) is a data structure representing a Haskell program of type t.
> All offers of advice accepted. I'm trying to get started soon, and good
> advice
> about what to avoid is especially welcome.  If any one wanted to help with
> this,
> that would be great.
> Tim Sheard
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at

More information about the ghc-devs mailing list