Семантика десятичных цифр натуральных чисел - PullRequest
0 голосов
/ 14 ноября 2018

Следующий пример находится в книге по программной инженерии. Я не понимаю, как этот морфизм может преобразовать десятичное число в эквивалентное натуральное число. Разве это не просто сумма всех цифр?


Пусть 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

неофициально объясняет значение натуральной цифры


Морфизм различает натуральное число, представляющее собой просто десятичное число, и натуральное число, представляющее собой комбинацию десятичного числа и натурального числа. Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 14 ноября 2018

Это эффективно:

n = 0
for digit in number:
    n = n * 10
    n = n + digit
return n
...