Следующий пример находится в книге по программной инженерии. Я не понимаю, как этот морфизм может преобразовать десятичное число в эквивалентное натуральное число. Разве это не просто сумма всех цифр?
Пусть 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 «каким-то образом» будут натуральными числами, соответствующими слева направо десятичным цифрам ноль, один, два, три, четыре, пять, шесть, семь, восемь, девять; то
type
<NatNum> ::= <DecDig> | <DecDig> <NatNum>
<DecDig> ::= zero | one | two | three | ... | nine
value
M: <NatNum> -> Num
M(d,n)≡10*M(d)+M(n)
M(d)≡case d of zero->0,one->1,...,nine->9 end
неофициально объясняет значение натуральной цифры
Морфизм различает натуральное число, представляющее собой просто десятичное число, и натуральное число, представляющее собой комбинацию десятичного числа и натурального числа. Спасибо за вашу помощь.