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/1d982ba10f590828b78eba992e73315dee33f78a/compiler/typecheck/TcSplice.hs#L818 On Wed, Feb 11, 2015 at 2:26 AM, Francesco Mazzoli <[email protected]> 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 > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe _______________________________________________ ghc-devs mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-devs
