Better primops for indexing into bytearray of sub-machine-sized words
Motivation
GHC 8.8 ships with Word8#
, Word16#
, Word32#
, and Word64#
. Hooray. They aren't used in the definition of their lifted counterparts yet, but that's fine. The primitives for indexing into ByteArray#
s that contain sub-machine-sized words still have misleading types though. For example, indexWord8Array# :: ByteArray# -> Int# -> Word#
when the result should really be Word8#
.
Proposal
There are two options. One is to change the types of the existing primops. This would break stuff. The alternative is to add new primops (indexTypedWord8Array#
?) that uses the new primitive type in its type signature. I'm happy to make this change or addition. I just need to know if there's a plan to go down a particular path.