Fergus Henderson wrote:
[...] I the right way to solve this is to support some way for the Haskell
user to tell the Haskell implementation what the right type is, for example
perhaps something along the lines of

data WINDOW

        foreign import ccall unsafe "static curses.h wstandend" wstandend
             :: Ptr WINDOW -> IO CInt

or perhaps the above plus a new declaration to associate the Haskell name
"WINDOW" with the C type name "WINDOW":

foreign type "curses.h WINDOW" WINDOW

Then ghc could generate C code which uses "WINDOW *" rather than "void *",
and there would be no need to use parentheses or #undef to stop the macro
being invoked.

"foreign type" looks like something really useful and it came to my mind several times in the past, too. But the pressure of having it was never high enough to spend a non-trivial amount of brain-cycles, we're all lazy programmers... :-]

While we're at it: Being able to specify "const" is high on my wish list for
some years now. And if we don't go the whole way here, I'd even be happy with
a simple way to specify a "const blah*" argument/return value.

Cheers,
   S.

_______________________________________________
FFI mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/ffi

Reply via email to