[Haskell-cafe] FFI basics
Bulat Ziganshin
bulat.ziganshin at gmail.com
Fri Feb 9 08:43:48 EST 2007
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:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list