Should not Foreign.C.Types, Foreign.C.TypesISO and System.Posix.Types export their types opaquely? That would make their interface and documentation architecture-independent.