Fergus Henderson fjh at
Wed Jan 3 05:12:54 EST 2001

On 03-Jan-2001, Marcin 'Qrczak' Kowalczyk <qrczak at> wrote:
> Wed, 03 Jan 2001 12:27:20 +1100, Manuel M. T. Chakravarty <chak at> pisze:
> > This means that we should not provide
> > 
> >     castFunPtrToPtr :: FunPtr a -> Ptr b
> >     castPtrToFunPtr :: Ptr a -> FunPtr b
> It does not mean that, because existing C libraries are usually
> non-portable and some do require using such casts, however meaningless
> they could be.

Well, if they are left, then at very least they should be
very clearly documented as being non-portable.

> > Has anybody ever used these casts?
> Yes: me, for the readline library.

Could you be more specific?
Which part of the readline library?
Why was the cast needed?

> But it's used to pass either a function pointer cast to a data pointer
> or a real data pointer to a function, together with an enumeration
> value indicating which one is this. Ugly, but that's life.
> Another example is dlopen.

I think you mean dlsym().

Fergus Henderson <fjh at>  |  "I have always known that the pursuit
                                    |  of excellence is a lethal habit"
WWW: <>  |     -- the last words of T. S. Garp.

More information about the FFI mailing list