FFI Report, CVS Id 1.5

Manuel M. T. Chakravarty chak at cse.unsw.edu.au
Sat Jul 7 09:48:38 EDT 2001


Fergus Henderson <fjh at cs.mu.oz.au> wrote,

> 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

I agree.  Especially, since libraries really don't introduce
name spaces; ie, I can't have [mylib1]foo and [mylib2]foo in
the same program.  Also, [] are less likely to occur in a
filename than ':'.

Manuel




More information about the FFI mailing list