<div dir="ltr"><div class="gmail_quote"><div dir="ltr">Am Fr., 26. Okt. 2018 um 11:15 Uhr schrieb Henning Thielemann <<a href="mailto:lemming@henning-thielemann.de">lemming@henning-thielemann.de</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">[...] There are the Storable methods<br>
<br>
peekByteOff :: Ptr b -> Int -> IO a<br>
pokeByteOff :: Ptr b -> Int -> a -> IO ()<br>
<br>
They ignore the target types of their pointers.</blockquote><div><br></div><div>... and for a good reason: This was intentionally specified this way to avoid the castPtr-Kung-Fu which would arise if the pointer arguments were e.g. "Ptr ()". Remember: You are on a totally unsafe level here, anyway, so adding tons of casts would not really help here much.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">[...] And if we are touching Storable class, [...]</blockquote><div><br></div><div>I really hope that Storable remains *totally* untouched, at least in the sense that it is only changed in a 100% backwards-compatible away. Otherwise basically the whole Haskell ecosystem with its tons of native bindings will explode... There is nothing wrong with a new class, but this one is effectively "untouchable".</div></div></div>