language-c-inline: Inline C & Objective-C code in Haskell for language interoperability
This library provides inline C & Objective-C code using GHC's support for quasi-quotation. In particular, it enables the use of foreign libraries without a dedicated bridge or binding. Here is a tiny example:
nslog :: String -> IO () nslog msg = $(objc ['msg :> ''String] (void [cexp| NSLog(@"Here is a message from Haskell: %@", msg) |]))
For more information, see https://github.com/mchakravarty/language-c-inline/wiki.
Known bugs: https://github.com/mchakravarty/language-c-inline/issues
New in 0.7.10: Distinction between
Class
(NSObject pointers) andStruct
(C pointers) in both hints and marhsallers.New in 0.7.9: C wrapper names include the filename to disambiguate linker symbols.
New in 0.7.8: (1) Record marshalling; (2) foreign pointer-class marshalling; (3) custom type marshallers; (4) marshall raw pointer types. Generated _objc.m files now always include "HsFFI.h" (as the tool can generate type names declared in that header). Marshals
Bool
asBOOL
. MarshalInt
andWord
toNSInteger
andNSUInteger
, respectively.New in 0.6.0: Introduction of explicit marshalling hints (for more flexibility and support of GHC 7.8's untyped Template Haskell quotations)
New in 0.5.0: Marshalling of numeric types
New in 0.4.0: Maybe types are marshalled as pointers that may be nil & bug fixes.
New in 0.3.0: Boxed Haskell types without a dedicated type mapping are marshalled using stable pointers.
New in 0.2.0: Support for multiple free variables in one inline expression as well as for inline code returning
void
.New in 0.1.0: We are just getting started! This is just a ROUGH AND HIGHLY EXPERIMENTAL PROTOTYPE.
[Skip to Readme]
Flags
Automatic Flags
Name | Description | Default |
---|---|---|
manualtests | Enables tests that require manual intervention. | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- language-c-inline-0.7.11.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.3.0.0, 0.3.0.1, 0.5.0.0, 0.6.0.0, 0.7.6.0, 0.7.6.1, 0.7.7.0, 0.7.8.0, 0.7.9.0, 0.7.9.1, 0.7.9.2, 0.7.10.0, 0.7.11.0 (info) |
---|---|
Dependencies | array, base (>=4.0 && <5), containers (>=0.4), filepath (>=1.2), language-c-quote (>=0.12.1), mainland-pretty (>=0.6 && <0.7), template-haskell [details] |
Tested with | ghc ==8.0.2 |
License | BSD-3-Clause |
Author | Manuel M T Chakravarty |
Maintainer | Manuel M T Chakravarty <chak@justtesting.org> |
Category | Language, Foreign |
Home page | https://github.com/mchakravarty/language-c-inline/ |
Bug tracker | https://github.com/mchakravarty/language-c-inline/issues |
Source repo | head: git clone git://github.com/mchakravarty/language-c-inline.git |
Uploaded | by ManuelChakravarty at 2017-07-30T12:01:10Z |
Distributions | |
Reverse Dependencies | 1 direct, 0 indirect [details] |
Downloads | 9764 total (15 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Last success reported on 2017-07-30 [all 1 reports] |