more specific types in the generated *_stub.h files
Having a declaration like:
foreign export ccall "respond" respond :: CWString -> IO CWString
all the types in the corresponding _stub.h
are HsPtr
.
Wouldn't it be possible to write more specific types reflecting my expectations, i.e., wchar_t *
?
It would be nice in order to signal automatically to the C code which uses the Haskell functions that the types of the Haskell functions changed. In simple cases, one could simply include the stub.h, and get automatically an error if the C code doesn't match the new types.
I've tried using a CTYPE pragma (cf. #2979 (closed) , #8222 (closed) , and https://mail.haskell.org/pipermail/haskell/2012-February/023155.html ) on a newtype to get such results:
newtype {-# CTYPE "wchar_t *" #-} CWString' = CWString' CWString
foreign export ccall "respond" respond :: CWString' -> IO CWString
but that still produces HsPtr
. (Well, I see, the CTYPE pragma was mostly intended for imports rather than exports.)