This is just some notes about my experiences with the various FFI tools, and my opinions. Maybe I am missing something but...... Let me just say that I like the 'new' FFI. The approach is much better then the usual approach to 'native' interfaces that you see with Tcl, java, python, whatever. In those cases you have to do the marshalling by hand, except where you can use SWIG, which is a pretty cool tool. Overall, I think there is not a perfect solution. Someone correct me if I am wrong. The ideal solution should take advantage of the fact that we are using Haskell: 1) Use the new FFI, for hugs and ghc. 2) Do Marshalling on the haskell side only. 3) Be a high level marshaling combinator library (written in haskell). 4) OPTIONALLY support some sort of IDL for automatically finding invoking the correct marshalling combinators. How do the existing tools stack up? I am not sure, because they are all in various states of support/etc. Here are my impressions... they may be wrong! Please take this with a grain of salt, I have not spent a lot of time with the tools below, just played with them a bit. Most of time was spent trying to build them L:) Greencard: Seems to work pretty well overall.. I dont beleive it supports hugs/ffi, but it does support hugs. It does the marshalling in haskell, but with a lot of _casm_ so I am not sure what that means. I got some simple examples to work, but not the Gdbm. The makefile didnt seem to make sense.. HC not defined, etc. Probably could with abit of work. I cant tell if callbacks are supported. HDirect: This one is still pretty beta, and so I had some trouble getting it to compile on my solaris machine. Probably not intended for solaris. I had to by hand prune some of the makefiles, ( in lib, there was some mysterious error about 'test' haveing no arguments when deciding whether to create a 'hugs' subdirectory, and In the end I commented out the all :: dlls line. but I did finally get it to go, at least the ghc parts. This one does its marshalling in haskell. It uses an IDL that is fairly common, although I dont know how much longer COM is going to be important. Anyway, when ready for prime time it might work pretty well, although like I said I would rather have a nice library. As for examples, I got the string example to work (you have to set FOR_WIN32 to no, even if you set FOR_HUGS to no. The makefile is a bit misleading). The gd example doesnt work, it assumes an old libgd that used to support GIFs. They arent suppored anymore, for legal reasons. KDirect: Looked at it abit. Pretty sparsely documented. I could not figure out how it fits in with the latest tools. How does QForeign relate to Foreign? What is an hsc file? Also it is pretty limitted in the marshalling. No callbacks etc. Others: I know there are a couple of others, but I lost interest. I Just wanted to report my findings for others, and then I am going into wait and see mode :) I dont have a dire need for this stuff at the moment, I can get my tasks done a different way. (Dont ask, it aint pretty).... Cheers to all! __________________________________________________ Do You Yahoo!? Get email at your own domain with Yahoo! Mail. http://personal.mail.yahoo.com/