[Haskell-cafe] Anonymous FFI calls

Michael Sloan mgsloan at gmail.com
Wed Feb 11 23:32:35 UTC 2015


I'd love for the implementation to be as powerful as the documentation
suggests it is :D

However, yes, in the meantime, fixing the documentation would be great!

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.

-Michael

On Wed, Feb 11, 2015 at 3:25 PM, Simon Peyton Jones
<simonpj at microsoft.com> 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 at haskell.org] On Behalf Of Michael
> | Sloan
> | Sent: 11 February 2015 23:19
> | To: Francesco Mazzoli
> | Cc: ghc-devs at 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/1d982ba10f590828b78eba992e73315dee33f78a/
> | compiler/typecheck/TcSplice.hs#L818
> |
> | On Wed, Feb 11, 2015 at 2:26 AM, Francesco Mazzoli <f at mazzo.li> 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 at haskell.org
> | > http://www.haskell.org/mailman/listinfo/haskell-cafe
> | _______________________________________________
> | ghc-devs mailing list
> | ghc-devs at haskell.org
> | http://www.haskell.org/mailman/listinfo/ghc-devs


More information about the Haskell-Cafe mailing list