I have a small C interface with a C type DB. DB handles are only administed on the C side; at the Haskell end they are a black box. The Haskell side never sees DB values, just values of type DB * (pointers to DB). I'm wondering how to represent this.
One solution would be just to represent the equivalent of DB * as type DBP = Addr (or Ptr () or something) but then of course it might be confused with any other Addr. A rather more ingenious solution would be something like newtype DBPInternal = DBPInternal Int type DBP = Ptr (Ptr DBPInternal) I think this might actually work in that a DBP would be marshallable and couldn't be confused with any other type not involving DBPInternal. Elegant it isn't, since it involves a pretend pointer inside the Ptr just to get the types working. I think the most elegant solution would be if I could use something like newtype DBP = DBP Addr deriving (-- some class --) and have it work automatically, but I don't know that I can. So tell me, what is the correct solution? George Russell _______________________________________________ FFI mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/ffi