[Haskell-cafe] another FFI question

Galchin, Vasili vigalchin at gmail.com
Fri Jun 20 23:52:06 EDT 2008


I am still reading the web pages. Here is what I tried:

data SigNotify = Signal | None | Thread | ThreadId


instance Storable SigNotify where

   sizeOf _ = (#const sizeof (int))

   alignment _ = 1

   poke Signal = (#const SIGEV_SIGNAL)

   poke None = poke (#const SIGEV_NONE)

   poke Thread = poke (#const SIGEV_THREAD)

   poke ThreadId = poke (#const SIGEV_THREAD_ID)


but I got ...

    Couldn't match expected type `Ptr SigNotify'
           against inferred type `SigNotify'
    In the pattern: Signal
    In the definition of `poke': poke Signal = poke (0)
    In the definition for method `poke'

Basically I want to marshall SigInfo constructors to CInt values. ??

Regards, Vasili


On Fri, Jun 20, 2008 at 3:20 PM, Bulat Ziganshin <bulat.ziganshin at gmail.com>
wrote:

> Hello Vasili,
>
> Friday, June 20, 2008, 11:51:11 PM, you wrote:
> > data Bonzo = A | B |C
>
> > How do I write the poke functions and call them?
>
> instance Storable Bonzo
>  poke A = poke 0
>  poke B = poke 1
>  poke C = poke 4
>
> call as "poke x"
>
> probably, you don't understand differences between OOP classes and
> type classes. look at http://haskell.org/haskellwiki/OOP_vs_type_classes
> and papers mentioned there
>
>
> --
> Best regards,
>  Bulat                            mailto:Bulat.Ziganshin at gmail.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20080620/8c4ab5dd/attachment.htm


More information about the Haskell-Cafe mailing list