Every value needs to be tagged, so an `int` only has 31 bits of numeric information.
There's stuff like "Int32.t", but IIRC it takes up 8 bytes for 4 bytes of inty goodness. Then there's BigArray which can store them contiguously, but that doesn't carry over to records.
Do you have a view on OCaml?