Hi all, 

I try to binding Haskell to VTE library.
Below are Vte.chs file i wrote.

Attachment: Vte.chs
Description: Binary data


I use c2hs with below command

    LANG=C c2hs -d trace -l $(pkg-config --cflags vte | sed 's/-I/-C-I/g') 
vte/vte.h Vte.chs
    
generate Vte.hs file.

When i compile Vte.hs file, i got below error: 

    Vte.chs:67:89:
        Couldn't match expected type `Widget' against inferred type `()'
          Expected type: IO (Ptr Widget)
          Inferred type: IO (Ptr ())
        In the second argument of `($)', namely `vte_terminal_new'
        In the second argument of `($)', namely
            `liftM (castPtr :: Ptr Widget -> Ptr Terminal) $ vte_terminal_new'

for binding code:

    terminalNew :: IO Terminal
    terminalNew = 
        makeNewObject mkTerminal $ liftM (castPtr :: Ptr Widget -> Ptr 
Terminal) $ {#call unsafe
terminal_new#}

In C code, fucntion `GtkWidget *vte_terminal_new(void);' return `IO (Ptr
Widget), then i use castPtr transform (Ptr Widget) to (Ptr Terminal),
right?

Why GHC report function `vte_terminal_new` return `IO (Ptr ())', I do
something wrong?

Any help?

Thanks!

  -- Andy


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to