Я начал работать с типами данных, но меня смущает следующее:
data Natural = Zero | Succ Natural
add :: Natural -> Natural -> Natural
add m Zero = m
add m (Succ n) = Succ (add m n)
Как это дополнение работает. Я понял, что Natural 3
представлено Succ(Succ(Succ 0)))
, хотя мне все еще не ясно на 100%, что значение уменьшается само по себе или что. Я хочу понять добавление шаг за шагом.
P.S. Это взято из книги Ричарда Берда «Введение в функциональное программирование».
add
уменьшается при каждом рекурсивном вызове: сSucc n
доn
. - person chi   schedule 22.11.2015