When I'm implementing something like this, I'd typically use Peano numbers so it is easier to be well typed without extra symbols: https://wiki.haskell.org/Peano_numbers#Peano_number_types