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@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@gmail.com