complementBit @Natural uses slow default definition
In this case the default definition involves allocating the bit i result:
x `complementBit` i = x `xor` bit i
This allocation could be avoided by using the bigNatComplementBit# function from ghc-bignum.