True multi stage Haskell

Shayan Najd sh.najd at gmail.com
Fri Nov 17 20:04:54 UTC 2017


Hi Tim,

About using GHC as a library module, have you see the ongoing work on
"native metaprogramming" in GHC at
  https://ghc.haskell.org/trac/ghc/wiki/NativeMetaprogramming

and a child project at
   https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow

There, online code generation is not of the highest priority, rather we are
trying to open up the compiler from top to down:
making available GHC's AST and then the parser and the typechecker
have priority over the other functionalities down the pipeline (like the
code generator).

> If any one wanted to help with this, that would be great.

I am interested to hear more about the approach you have in mind, and would
be happy to help.

Yours,
  Shayan

On Fri, Nov 17, 2017 at 6:05 PM, Tim Sheard <sheard at pdx.edu> 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 haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20171117/f953f1a4/attachment.html>


More information about the ghc-devs mailing list