
Thanks to everyone who replied!
It seems like that through a combination of facilities like `libffi'
and `addTopDecls' I can do everything that I wanted to do.
I still want to take a shot at implementing anonymous FFI calls, since
IMHO I think they are a very small but useful addition to the
language.
Francesco
On 12 February 2015 at 09:29, Simon Peyton Jones
| Also, I meant to say that addTopDecls is only exported by | "Language.Haskell.TH.Syntax". While this is a digression, there are a | few other handy functions that are oddly left out of | "Language.Haskell.TH": addDependentFile, addModFinalizer, and possibly | more.
That does seem wrong. Do make a patch!
SIMon
| | -Michael | | On Wed, Feb 11, 2015 at 3:25 PM, Simon Peyton Jones |
wrote: | > I would LOVE someone to improve the documentation for addTopDecls. | Manuel Chakravarty and Geoff Mainland were responsible for the | implementation. | > | > Simon | > | > | -----Original Message----- | > | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of | > | Michael Sloan | > | Sent: 11 February 2015 23:19 | > | To: Francesco Mazzoli | > | Cc: ghc-devs@haskell.org; haskell | > | Subject: Re: [Haskell-cafe] Anonymous FFI calls | > | | > | It seems like addTopDecls[1] will able to help here. | Unfortunately, | > | the function is not well documented and not very discoverable | > | because it's only exported by Language.Haskell.TH. | > | | > | The documentation doesn't mention that it can only be used to | create | > | new top level functions and FFI imports[2]. I think that adding | FFI | > | imports was the main motivation for implementing it. In the past | > | I've wanted to generate instances via this function, but | > | unfortunately it's not implemented.. | > | | > | Hope that helps! | > | -Michael | > | | > | [1] http://hackage.haskell.org/package/template-haskell- | > | 2.9.0.0/docs/Language-Haskell-TH-Syntax.html#v:addTopDecls | > | | > | [2] | > | | https://github.com/ghc/ghc/blob/1d982ba10f590828b78eba992e73315dee33 | > | f78a/ | > | compiler/typecheck/TcSplice.hs#L818 | > | | > | On Wed, Feb 11, 2015 at 2:26 AM, Francesco Mazzoli | wrote: | > | > Hi, | > | > | > | > I am in a situation where it would be very useful to call C | > | > functions without an explicit FFI import. For example, I'd like | > | > to be able to do | > | > | > | > (foreign import ccall "cadd" :: CInt -> CInt -> CInt) 1 2 | > | > | > | > instead of declaring the foreign import explicitely at the top | level. | > | > | > | > Is there a way to do this or to achieve similar results in some | > | > other way? | > | > | > | > If not, I imagine it would be easy to implement such a facility | in | > | > GHC, given that the code implementing calling to C functions | must | > | > already be present to implement "proper" FFI imports. I think | > | > such an addition would be useful in many cases. | > | > | > | > Thanks, | > | > Francesco | > | > _______________________________________________ | > | > Haskell-Cafe mailing list | > | > Haskell-Cafe@haskell.org | > | > http://www.haskell.org/mailman/listinfo/haskell-cafe | > | _______________________________________________ | > | ghc-devs mailing list | > | ghc-devs@haskell.org | > | http://www.haskell.org/mailman/listinfo/ghc-devs