Hello Yitzchak,

Friday, February 9, 2007, 3:23:53 PM, you wrote:

> I would like to use FFI for the first time. Can someone
> give me a really, really simple complete example?

nothing can be easier

main = print (c_mysin 1.0)

foreign import ccall "mysin.h mysin"
  c_mysin :: Double -> Double


mysin.c:

double mysin(double x)
{
  return sin(x);
}

mysin.h:

double mysin(double x);


compilation:
ghc -c mysin.c
ghc main.hs mysin.o

if you need to call imperative function (wjich returns different
values for different calls with the same parameters) - just add IO to
return type:

foreign import ccall "myrnd.h rnd"
  c_rnd :: Double -> IO Double

in C, function defined in the same way as in previous example

look also at "Tackling the awkward squad: monadic input/output,
concurrency, exceptions, and foreign-language calls in Haskell"
http://research.microsoft.com/Users/simonpj/papers/marktoberdorf/marktoberdorf.ps.gz


-- 
Best regards,
 Bulat                            mailto:[EMAIL PROTECTED]

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to