MatrixAI / Haskell-Demo

Haskell Demo Project using Nix

Home Page:https://matrix.ai

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cabal foreign-library support (using Haskell to create a shared library for other languages)

CMCDragonkai opened this issue · comments

If we ever want to use Haskell to write a shared object/library that is meant to be consumed by another language (like C or something that also has FFI). Then we can use the foreign-library feature of Cabal.

The feature is explained here: https://www.haskell.org/cabal/users-guide/developing-packages.html#foreign-libraries

And there's a tutorial about it: https://qnikst.github.io/posts/2018-05-02-cabal-foreign-library.html

However hpack currently doesn't support it yet: sol/hpack#258

This may be useful for cases like using Haskell code within a kernel module.

I added a demo of this using foreign-library feature here: https://github.com/pdlla/haskell-ffi-cabal-foreign-library-examples

As mentioned, hpack does not support it yet, however, it still works with stack as long as you write your own .cabal file (see stack branch, which will get merged eventually).