[Haskell-cafe] Re: Mixing C and Haskell code in the same file

Simon Marlow marlowsd at gmail.com
Thu Jul 23 07:13:14 EDT 2009


On 12/07/2009 19:26, Bulat Ziganshin wrote:
> Hello Maurí­cio,
>
> Sunday, July 12, 2009, 9:11:53 PM, you wrote:
>
>> I did read that. It says I can use "#def" to insert
>> a C definition, but there are no examples of use, and I
>> could not find one.
>
> #def inline int signof(int x) {return x<0?-1:x>0?1:0;}
> foreign import ccall safe ""
>    signof :: CInt ->  CInt
>
> main = print (signof 33)
>
> compilation:
> hsc2hs tabi.hsc
> ghc --make tabi.hs tabi_hsc.c

That use of "inline" doesn't have any effect since GHC 6.10, because 
even when using -fvia-C we're not #including the header file in the 
generated C code.

Also that note in the docs about not using #def in library code is 
outdated: it should be safe to use #def in libraries now.  I've fixed 
the docs.

Cheers,
	Simon


More information about the Haskell-Cafe mailing list