Library/cinvoke
From HaskellWiki
cinvoke is a library allowing C functions of types only known at runtime to be called from Haskell.
As an example is worth a thousand words:
module Main where import Foreign.Ptr import Foreign.CInvoke main = do cxt <- newContext libc <- loadLibrary cxt "libc.so.6" malloc <- loadSymbol libc "malloc" memset <- loadSymbol libc "memset" free <- loadSymbol libc "free" let sz = 2^30 p <- cinvoke malloc (retPtr retVoid) [argCSize sz] cinvoke memset (retPtr retVoid) [argPtr p, argCInt 0, argCSize sz] cinvoke free (retPtr retVoid) [argPtr p]
It can be found at hackage: http://hackage.haskell.org/package/cinvoke
The Haddock documentation is (for now) at: http://student.science.uva.nl/~rturk/cinvoke-0.1-docs/
