It's funny you pick that example since of natural numbers can be viewed as lists (jargon: they are both free monoids) with addition as concatenation:concatenation `(++) :: Natural -> Natural -> Natural`:
type Natural = [()] zero, one, two, three, four :: Natural zero =  one = [()] two = [(), ()] three = [(), (), ()] four = [(), (), (), ()] ...Your point still holds.
>>> four [(), (), (), ()] >>> three ++ one [(), (), (), ()]
Our (non-jargon) vocabulary simply isn't equipped to deal with this level of abstraction so we need jargon if we intend to be fully descriptive — existing words don't cut it and we are just at the bottom rung of the abstraction ladder.
It's up to us as a community how much we care about faithfully describing things, Simon Peyton Jones himself claims tongue-in-cheek that their biggest mistake was not calling monads “warm fuzzy things” :)
"Wearing the hair shirt: A retrospective on Haskell" by Simon Peyton Jones. (And it's not actually a paper, but was an invited talk.)