[Haskell-cafe] Storable class?

Evan Laforge qdunkan at gmail.com
Tue Apr 22 17:48:30 EDT 2008


> On Tue, Apr 22, 2008 at 9:29 PM, Evan Laforge <qdunkan at gmail.com> wrote:
> > This uses hsc2hs.  As far as I can tell, alignment is unused.  I've
> > never had an error from using 'undefined' there.
>
> Some architectures require all sorts of wacky alignments. E.g. floats may
> need to be 4 byte aligned, so it's very important that you don't poke a
> single byte, and then a float, you need to pad with 3 empty bytes first
> (assuming the whole structure starts at a 4 byte alignment).

Does that mean that if ghc is on a sufficiently wacky architecture it
will evaluate "alignment" and throw undefined?  And if that's the case
it would seem that you can't write "alignment" without introducing
platform dependencies.

I've also heard that even on x86, if you don't have things aligned
properly, structure access will be slow.  But I'd assume since I'm
poking into a C structure, either the C compiler will have taken care
of alignment or its definition in C will have to include some manual
padding, and so the haskell side doesn't have to worry about it at
all.

The FFI doc doesn't really talk about the alignment method at all, so
I don't really understand how to write one or how it's used.


More information about the Haskell-Cafe mailing list