Re: [Haskell-cafe] Anonymous FFI calls

Hi!
I don't mean to be accusatory with the whole documentation thing - I
totally understand that most folks have a lot going on! In this
particular case, I got very excited when I initially saw addTopDecls,
because it says it allows you to "Add additional top-level
declarations". After implementing something to use it, I got rather
disappointed as it couldn't add instances.
So, when I say "not implemented", it's just that the docs say it
allows you to add additional top-level decls, when you can really only
add functions, variable bindings, and foreign import decls.
I didn't realize that not re-exporting these functions is due to their
experimental status. That makes sense! I'm glad it was a conscious
decision. I just tried writing a demo of addTopDecls, but
unfortunately using it to add a function and referencing this function
causes a GHC internal error:
https://gist.github.com/mgsloan/53d7fa50338c696e5c80 . I haven't
tried it with a foreign import yet.
-Michael
On Wed, Feb 11, 2015 at 3:51 PM, Geoffrey Mainland
Typed Template Haskell happened at the end of my tenure at MSR, and there was a mad rush to get it in to the compiler in time for 7.8.3 at the same time I was starting a new job. I'm afraid the documentation is indeed wanting, but the alternative was no typed Template Haskell.
One side-effect was that the functions you note as present only in Language.Haskell.TH.Syntax were not thoroughly vetted, so we didn't re-export them from Language.Haskell.TH.
I am willing to help with documentation if people want to use this functionality. Has anyone attempted to use addTopDecls? Michael, when you say "it's not implemented," what do you mean? What, exactly, is not implemented?
Cheers, Geoff
On 2/11/15 6:32 PM, Michael Sloan wrote:
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
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/1d982ba10f590828b78eba992e73315dee33f78a/ | 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
participants (1)
-
Michael Sloan