[haskell-llvm] Limitation of API - omissions or design?
lemming at henning-thielemann.de
Wed Dec 15 23:51:55 EST 2010
Maciej Piechotka schrieb:
> I tried to use Haskell + LLVM binding to it to write university
> compilers assignment and I run into some problems with API:
> - Many functions are non-existing or not exported.
It's also a problem of LLVM that not all LLVM functions are exported by
the LLVM interface to C. Haskell can only call the C interface, not the
> For example it seems
> to be not possible to create array containing other things that 0 and -1
> other then String.
I have already successfully worked with arrays. Can you please show a
piece of code that does not do what it should?
> The constOf function is also not exported.
The constOf function is exported, but for some unknown reason Haddock
does not show it.
> - Higher API enforces type safety, which is good thing if one uses LLVM
> to DSL - however if LLVM is used as backend it causes problems as I
> don't know types at compile time and checking is part of other part of
You can use Rank2Types in order to construct Haskell types at runtime.
The technique is illustrated by converting a Haskell number to a Haskell
type level number:
> GADTs allows workaround problem but
> - Higher API cannot jump into lower API for a few instructions but uses
> all-or-nothing approach. Normally it would be good thing if not the
> previous problems.
Maybe if you show a specific problem we can turn Nothing to All. Note
that there is another Haskell LLVM interface that, as far as I know, is
not as strongly typed and is used for the GHC LLVM backend.
More information about the Haskell-llvm