
Am Donnerstag, 9. März 2006 08:46 schrieb Bulat Ziganshin:
Thursday, March 9, 2006, 2:20:00 AM, you wrote:
foreign import ccall duma_init :: Int -> IO Int
MQK> HsInt duma_init(HsInt arg); MQK> Or use int on the C side and CInt on the Haskell side. MQK> fromIntegral can be used for converting integers in Haskell.
for small "home" projects you can even use "Int" and "int" which would work in most of Haskell implementations
Uh, oh... :-( This is roughly as "safe" as assuming that short, int, long, and long long are of the same size, so this is highly discouraged. The rationale behind the FFI addendum is as follows: * If you want to use a given C API, use the types from Foreign.C.Types on the Haskell side in the foreign imports. * If the C API is under your control, you have basically two options: Either use Foreign.C.Types as above, or use the types/preprocessor #defines in the HsFFI.h header to bind to basic Haskell types. Which option is better suited depends on what you are trying to achieve. This should be easy enough to use and everything else is not guaranteed to work... Cheers, S.