John Meacham wrote:
On Thu, Mar 30, 2006 at 03:50:06AM +0100, Brian Hulley wrote:
where the intention is that the callback will take the width and
height of the window and return a RenderM action, the problem is
that because the FFI does not allow RenderM to appear in a foreign
type.

it should, the types in foreign declarations should "see through"
newtypes.

Unfortunately GHC does not seem to support this:

  foreign import ccall duma_clear :: Word.Word32 -> RenderM ()

      Unacceptable result type in foreign declaration: RenderM ()
      When checking declaration:
      foreign import ccall safe "static  &duma_clear"
           duma_clear :: GHC.Word.Word32 -> RenderM ()

even though the FFI spec agrees with you (Section 3.2):

    The argument types ati produced by fatype must be
    marshallable foreign types; that is, each ati is either (1)
    a basic foreign type or (2) a type synonym or renamed
    datatype of a marshallable foreign type. Moreover, the
    result type rt produced by frtype must be a
    marshallable foreign result type; that is,
    it is either a marshallable foreign type, ...

Thus leading to all the messy fiddling about I have to do to use RenderM instead of IO in my imported functions and callbacks.

A tool like greencard may solve some of these problems but the problem I would then have is how to incorporate it in my very flaky development environment (I'm just using the plain text editor in Visual C++ with a shortcut bound to a batch file which calls ghc so the build process is all held together by bits of string and sellotape therefore I don't want to complicate it further if at all possible...)

By the way, I think I may have been wrong about GHC not optimizing the call to dropRenderM out of the onRender function in my last post, because when I look at the output using -dddump-cmm (instead of -simpl) dropRenderM is not mentioned in the code for onRender (although I'm not an expert at reading cmm output either and it is mentioned in some other places....)

Regards, Brian.

_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to