[haskell-llvm] [Haskell-cafe] LLVM, getElementPtr?

Henning Thielemann lemming at henning-thielemann.de
Mon Dec 6 14:07:16 EST 2010


On Mon, 6 Dec 2010, Ryan Ingram wrote:

> On Sun, Dec 5, 2010 at 12:45 PM, Lally Singh <lally.singh at gmail.com> wrote:
>
>> Is that how it's intended?
>
> I think that's correct, (it at least fits the pattern for 'with'
> functions in Haskell).

I'm glad to have chosen a name that guides people to the correct usage. 
:-)

> They're idiomatically used with syntax like this:
>
>> buildReaderFun :: String -> CodeGenModule (Function (IO ()))
>> buildReaderFun nm = do
>>  puts <- newNamedFunction ExternalLinkage "puts" :: TFunction (Ptr Word8 -> IO Word32)
>>  withStringNul nm $ \greetz -> createFunction ExternalLinkage $ do
>>          tmp <- getElementPtr greetz (0 :: Word32,(0 :: Word32, ()))
>>          call puts  tmp -- Throw away return value.
>>          ret ()

Using ($) is not allowed here, since the functional parameter of 
withStringNul is universally quantified. You have to write

>  withStringNul nm (\greetz -> createFunction ExternalLinkage $ do
>          tmp <- getElementPtr greetz (0 :: Word32,(0 :: Word32, ()))
>          call puts  tmp -- Throw away return value.
>          ret ())



More information about the Haskell-llvm mailing list