[haskell-llvm] Constructing the array of argument types

Nathan Howell nathan.d.howell at gmail.com
Thu Nov 22 21:04:37 GMT 2012


Foreign.Marshal.Array.withArrayLen can be used, so given a (xs :: [Type])
you can get a [TypeRef] and then convert it to a native C array like so:

fty <- withArrayLen (map typeRef xs) $ \ argsLen argsPtr -> return $
functionType retTy argsPtr argsLen 0



On Thu, Nov 22, 2012 at 12:28 PM, José Romildo Malaquias <
j.romildo at gmail.com> wrote:

> Hello.
>
> The low level LLVM bindings to Haskell (module LLVM.FFI.Core) has the
> function
>
>   functionType
>     :: TypeRef     -- return type
>     -> Ptr TypeRef -- array of argument types
>     -> CUInt       -- number of elements in array
>     -> CInt        -- non-zero if function is varargs
>     -> TypeRef
>
> to create a LLVM function type.
>
> Supposing that my toy compiler uses the following type to represent
> types internally:
>
>   data Type = INTEGER | LOGIC
>
> How can a list of formal parameter types reprented as a list of type
>
>   [Type]
>
> can be converted to the low level array (expected by the above function)
> of type
>
>    Ptr TypeRef
>
> ?
>
> Romildo
>
> _______________________________________________
> Haskell-llvm mailing list
> Haskell-llvm at projects.haskell.org
> http://projects.haskell.org/cgi-bin/mailman/listinfo/haskell-llvm
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://projects.haskell.org/pipermail/haskell-llvm/attachments/20121122/edb5f366/attachment-0001.htm>


More information about the Haskell-llvm mailing list