FFI Report, CVS Id 1.5

Fergus Henderson fjh at cs.mu.oz.au
Tue Jun 19 02:01:08 EDT 2001

On 18-Jun-2001, Simon Peyton-Jones <simonpj at microsoft.com> wrote:
> | IMHO, this is not a very attractive solution.  I'd prefer to 
> | complicate the ccall entity description slightly and go for
> | 
> |  	foreign import ccall "myheader.h foo at mylib" foo :: Int -> Int
> | 
> | Ie, we optionally allow the specification of the name of a
> | dll.  This is only a hint and may be ignored by a given
> | Haskell system (in particular, in most systems, command line 
> | options overrule such library names).
> OK: belt and braces.  Certainly the 'mylib' is properly part of foo's
> external name.  Let's use the "::" syntax which .NET uses for other
> namespace management things
> 	"myheader.h mylib::foo" foo :: Int->Int

This is a DLL qualification rather than a namespace qualification;
it's similar in some ways, but not quite the same.
The closest .NET equivalent would be assembly qualification, which is
written as "[mylib]foo" in ILASM and "foo,mylib" in ASP+ web.config files.
So I suggest using the ILASM syntax, i.e.

	"myheader.h [mylib]foo" foo :: Int->Int

But it doesn't matter too much exactly which syntax is chosen.

Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.

More information about the FFI mailing list