
jgbailey:
I am thinking of writing a simple library in Haskell which would be useful in a number of different scenarios, and not always with programs written in Haskell. That makes me think the library should be C-compatible and able to link with C programs. Reading over chapter 9 of the GHC manual ("Foreign function interface"), it seems simple to do.
However, what are the consequences of such an implementation? Would any program using my library need to link the entire GHC runtime? The
Yes.
library will not expose any higher-order functions or other business.
You still need the GHC runtime support for the Haskell code (GC, scheduler et al).
It would be straightforward but tedious to write in C, which is why I'd rather use Haskell.
Easy enough to do, http://haskell.org/haskellwiki/Calling_Haskell_from_C Would be great to hear how you find the experience. -- Don