<div dir="ltr"><br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
So at the moment you&#39;re using using Storable and a Haskell record, say:<br>
<br>
data AIOCB = AIOCB {<br>
 &nbsp; &nbsp;...<br>
 &nbsp;}<br>
<br>
and we&#39;re suggesting instead:<br>
<br>
newtype AIOCB = AIOCB (ForeignPtr AIOCB)</blockquote><div><br>&nbsp; &nbsp; &nbsp; ^^^ I am somewhat new to Haskell. Not a total newbie! But what exactly does the above mean? Are the three references of &quot;AIOCB&quot; in different namespaces? If it too much trouble to explain, can you point me at Haskell URL to read?<br>
&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
then to access a member use hsc2hs:<br>
<br>
getBlah :: AIOCB -&gt; IO Blah<br>
getBlah (AIOCB fptr) =<br>
 &nbsp;withForeignPtr fptr $ \ptr -&gt; {# peek aiocb,blah #} ptr<br>
<br>
So you only access the parts you need and keep the aiocb C struct<br>
allocated on the heap (use mallocForeignPtr).<br>
<font color="#888888"><br>
Duncan<br>
<br>
</font></blockquote></div><br></div>