Inline C & Objective-C in Haskell ===================================== This library uses Template Haskell and `language-c-quote`, a quasi-quotation library for C-like languages, to provide inline C and Objective-C in Haskell. It extracts the C/Objective-C code automatically, when compiling the Haskell program, and generates marshalling code for common types. The wiki on GitHub details the [motivation](https://github.com/mchakravarty/language-c-inline/wiki/Motivation) for this approach. For further motivation, have a look at the slides of my YOW! Lambda Jam 2014 talk [Foreign Inline Code in Haskell](https://speakerdeck.com/mchakravarty/foreign-inline-code-in-haskell). Building -------- To build the library, just use `cabal install` as usual from the source code directory or by installing from Hackage. You may like to have a look at a [minimal example](tests/objc/minimal/Main.hs) of its use, which you can build as follows: * Execute `cd tests/objc/minimal; make`. * Now run the demo executable with `./Minimal`. To build the proof of concept example, do the following: * Execute `cd tests/objc/concept; make`. * Now run the demo executable with `./InlineObjC`. To build an example class wrapping a Haskell record, do the following: * Execute `cd tests/objc/record; make`. * Now run the demo executable with `./Particle`. To build the more complex Haskell interpreter app: * Execute `cd tests/objc/app; make`. * Now `open -a HSApp.app`. I tested it with Haskell Platform 2013.2.0.0 (which includes GHC 7.6.3) and it requires the latest version of `language-c-quote`, which is currently 0.7.7. Status ====== The library is in beta and so far focuses on Objective-C. Automatic marshalling support is still somewhat limited. However, it is quite easy to add more types, and I do welcome pull request!