[This comment is a bit late, I know...] malcolm-ffi@cs.york.ac.uk wrote,
Fergus writes, triggered by my suggestion of "foreign value":
Mercury supports this using `foreign_decls' and `foreign_code' pragmas.
I refrained from proposing this in an earlier mail, but I've been thinking about it for a long time. I *really* *really* want to be able to insert small snippets of foreign code into the source of a Haskell module.
GreenCard allows you to do this, via the %- or %C directives. It is one of the features I miss most about the new FFI. I know that it is always possible to write a small .c file and compile and link it in separately, but with the new FFI that now seems to necessitate writing an additional .h file as well. And all for a handful of lines of foreign code that could easily be kept in the Haskell source, with the ease-of-comprehension benefits entailed by keeping everything together that belongs together. [..]
I believe that functionality like this should be implemented by an extra tool rather than the Haskell compiler. GreenCard does it, hsc2hs has something similar, and I am considering a similar facility for c2hs. I completely agree with your motivation of keeping small foreign code snippets inline to make the interface easier to comprehend and maintain. This is, however, a good indicator that we should use an extra tool. IMHO, the FFI language extension should me as small as possible. Convenience should be provided by extra tools. Unless, the feature is impossible (or very hard) to implement as an extra tool, but I am not convinced that this is the case here. Cheers, Manuel