это типа то о чем говорит Пеано
Если функция называется как надо, то нет, это не сумма.
Если так хочется залезать в программирование, лучше взять индуктивное определение типа натуральных чисел на хаскеле:
data Nat = Z | S NatЭто определение даёт нам почти всё, что описывается теми пятью аксиомами:
(1) элемент
Z :: Nat,
(2) функцию
S :: Nat -> Nat,
(3) то, что
S n не совпадает с
Z никогда,
(4) то, что
S m совпадает с
S n лишь в случае, если совпадают
m и
n,
(5) то, что можно определять функции от
Nat отдельно для случаев
Z и
S n.
Правда, (5) даёт вещь слабее индукции (только сопоставление с конструкторами
Nat), потому что сам язык не создавался для чистоты таких иллюстраций и позволяет вставлять рекурсивные вызовы куда попало и какого угодно вида (как обычно бывает и в других) и тем выходит за рамки рассматриваемого. Лучшей альтернативой было бы определить функцию свёртки
foldNat :: a -> (a -> a) -> Nat -> a
foldNat z s Z = z
foldNat z s (S n) = s (foldNat z s n)и разрешить пользоваться в определении других функций от аргументов типа
Nat только ей. Это достаточно большое отличие от математики; можно было бы рассмотреть какой-то другой ещё менее известный язык, где только так писать (заведомо не частичные) функции и можно, но я в любом случае планирую оставить этот пример как есть и не пояснять дальше. Потому что тут можно пояснять сто лет и не закончить.