Yes, although the smallest unit is a byte in this proof of concept. For bits we probably need a bit more support in later stages of GHC.
{-# UNPACK #-}
uses the infrastructure for unboxed sums, which is really based around the assumption that each field is passed in a separate register, so we waste a lot of space if we directly translate that to heap objects. Maybe we can also reorder fields globally later, when unpacking multiple constructors, instead of doing every sum individually.
I hope we can use this in GHC itself and carefully use unpacking to save some memory.