Эй, у меня возникли проблемы с пониманием того, как работают рекурсивные алгебраические типы и как их использовать. Возьмем, например, определение ниже RAT для натуральных чисел:Понимание рекурсивных алгебраических типов в функциональном программировании
data Nat = Zero | Succ Nat
Мы используем RAT здесь, потому что набор значений должен быть бесконечным, и я знаю, что принцип заключается в том, чтобы выразить каждое новое значение с точки зрения предыдущий, но я не понимаю, как это образует натуральные числа. Кто-то умнул бы это очистить? Благодаря
Перевести 'Succ' на' 1 + '. Каждое натуральное число равно 1 + (1 + (... (1 + 0) ...)) 'для подходящего числа операций. –