Given the context, Ruby choice seems right to me. But the real core of the problem is
the minus sign. My father says, that minus simply represents an unfinished operation,
intention to subtract. Citing anonymous Wikipedia contributor:
"Negative numbers appeared for the first time in history in the Nine Chapters on
the Mathematical Art, which in its present form dates from the period of the
Chinese Han Dynasty (202 BC. - AD 220), but may well contain much older material.
Indian mathematicians developed consistent and correct rules on the use of negative
numbers, which later spread to the Middle East and then into Europe. Prior to the
concept of negative numbers, negative solutions to problems were considered "false"
and equations requiring negative solutions were described as absurd (Diophantus's
Arithmetica cited)."
My father thinks, that Greek adherence to natural numbers, inherited by medieval Europe,
was not due to their backwardness (they eg. knew that π was irrational), but because
complicated objects catering to daily needs of bookkepers were bad elementary blocks
for general-purpose applied mathematics.
I would like to see basic math rebuilt without reaching for minus (and zero) too early.
Relevant Ruby proposal would be: have true natural numbers (class Natural), have morally
sound rationals (natural/ natural), and positive-only floats. Will I try to prototype
this myself one day? Regarding zero, which has similar issues as minus and is absent
from true natural numbers. I wonder how far would one get using nil (or null?) in its
stead, like ancient Romans did...