FFI progress
Simon Peyton-Jones
simonpj at microsoft.com
Wed Mar 28 04:33:11 EST 2001
| I propose the following (basically my last proposal plus
| suggestions made by others):
|
| foreign import "gtk.h:foo" foo :: <type>
|
| corresponds to a `#include "gtk.h"' and
|
| foreign import "<gtk.h>:foo" foo :: <type>
|
| corresponds to a `#include <gtk.h>'. The former allows to
| have a custom `gtk.h' "lying around" as suggested above.
| The filename may of course be a path.
|
| As suggested by SimonM, we also allow multiple includes
| seperated by comma
|
| foreign import "<sys/types.h>,<sys/sockets.h>:socket"
| socket :: <type>
Do we really need this? Surely it's not so hard to have one
header file per package living in a standard place that collects
the headers needed for a particular package, including whether
they are <..> or "...", etc.
Its easy to add features and nigh impossible to remove them.
I suggest we have just
"gtk:foo"
(no ".h") meaning
#include "gtk.h"
Now we can sensibly interpret "gtk:foo" as meaning "foo from package
gtk";
and in concrete terms import a suitable header file. But I could
imagine
a clever compiler could also use to add gtk.a to the link line etc
(hence no .h).
Let's see if simplicity is too painful. I can't imagine it will be.
Simon
More information about the FFI
mailing list