[GUI] Example: Binding C++ to Haskell using the ffi

David Sankel camio@yahoo.com
Sat, 1 Mar 2003 13:44:29 -0800 (PST)


--0-207792226-1046555069=:24659
Content-Type: text/plain; charset=us-ascii
Content-Id: 
Content-Disposition: inline

Sorry, forgot attachment . . . again. :-P

--

Here is some example code doing just that.  It uses
ghc.

Questions:

Can one think of better ways to interface generic c++
libraries to Haskell?  What do you think of the ->>
member function operator?

for the ffi people:

Has any though gone into cplusplus?  If so, how would
it interface?  Would stubs on the c++ side be
generated or would it use the code directly.

Later,

David J. Sankel
--0-207792226-1046555069=:24659
Content-Type: application/octet-stream; name="fooble2.tar.bz2"
Content-Transfer-Encoding: base64
Content-Description: fooble2.tar.bz2
Content-Disposition: attachment; filename="fooble2.tar.bz2"

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


--0-207792226-1046555069=:24659--