[Haskell-cafe] Problems with high-level interface to LLVM

Henning Thielemann lemming at henning-thielemann.de
Mon May 16 20:20:14 CEST 2011


Николай Кудасов wrote:

> Problem becomes much more complex when I want to add function calls into 
> my language. Type class CallArgs has an instance CallArgs (IO a) 
> (CodeGenFunction r (Value a)), which can't be given as a constraint in 
> typed AST because of free variable r. For a long time I have had no idea 
> of how I can add function calls into my language.

RankNTypes?

First I was also annoyed by this 'r' type parameter. But I think it is 
there in order to assert that LLVM code blocks have the same return type 
in 'ret' instructions when composing them.

> The only solution I see at the moment is to reject high-level llvm 
> interface provided by llvm library and use directly FFI bindings to C.

I have not tried, but I would also think that the strongly typed llvm 
binding makes writing a compiler hard. However I enjoy it for 
just-in-time compilation and building an embedded domain specific 
language. For writing a compiler you might prefer the LLVM bindings that 
are created by David Terei for GHC's LLVM backend.


PS: Also posted to haskell-llvm mailing list.




More information about the Haskell-Cafe mailing list