Heya, I'm happy to announce a new release of call-haskell-from-anything [1], my library for FFI-via-serialisation that allows to easily call Haskell functions from any other language that can open shared object files (`.so` via `dlopen()`) and has a MessagePack library available.
This is almost all programming languages; for examples for Python and Ruby see [2]. The FFI-via-serialisation approach makes it possible to export most functions to other languages "for free": no FFI type unpacking boilerplate, everything that has a MessagePack instance (much easier to write than `Storable` instances) will do. For example if you have a function chooseMax :: [Int] -> Int all you have do to make it callable is foreign export ccall chooseMax_export :: CString -> IO CString chooseMax_export = export chooseMax Version 1.0 uses closed type families to remove the restriction that so far, pure functions has to be wrapped into the Identity monad to be exported: a -> b -> ... -> Identity r With 1.0, this is no longer necessary. You can now export any function of type a -> b -> ... -> r to be called from your favourite Haskell contender languages (of course those have no chance ...). Cheers, Niklas [1]: https://hackage.haskell.org/package/call-haskell-from-anything-1.0.0.0 [2]: https://github.com/nh2/call-haskell-from-anything _______________________________________________ Haskell mailing list Haskell@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell