[Haskell-cafe] Anonymous FFI calls

Simon Peyton Jones simonpj at microsoft.com
Thu Feb 12 08:29:29 UTC 2015


|  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
|  <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/1d982ba10f590828b78eba992e73315dee33
|  > | f78a/
|  > | 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