David Feuer
2017-12-16 03:22:18 UTC
It seems surprising that there are no Storable instances for tuple types. I
would expect any tuple of Storable types to be Storable. To provide a
sensible FFI experience, the order of the fields should be preserved. Since
Storable generally aligns values, I believe elements should be aligned
within tuples as well, in the default fashion used for C structs. We could
offer a Packed newtype to override this behavior.
Why store tuples like this, and not the way Data.Vector.Unboxed does? A
moment's reflection will show that it simply can't. A Ptr is a single
pointer and must remain one; there's no room in it to deal with multiple
arrays or extra offset info.
would expect any tuple of Storable types to be Storable. To provide a
sensible FFI experience, the order of the fields should be preserved. Since
Storable generally aligns values, I believe elements should be aligned
within tuples as well, in the default fashion used for C structs. We could
offer a Packed newtype to override this behavior.
Why store tuples like this, and not the way Data.Vector.Unboxed does? A
moment's reflection will show that it simply can't. A Ptr is a single
pointer and must remain one; there's no room in it to deal with multiple
arrays or extra offset info.