Введение
Упомяну сразу, данная статья написана по мотивам целой серии постов в отличном блоге
Inside F#. Тем не менее она не является переводом в чистом виде, а скорее вольным изложением, чтобы доступным языком объяснить — что же за зверь такой, катаморфизм, и с чем его едят. Слово это думаю не очень на слуху, чего стоит хотя бы тот факт, что статьи по нему нет в русской википедии (и вообще ни в одной национальной, кроме почему-то голландской. Наверно ФП как-то соответсвует духу травокурения)
Итак, строго говоря,
катаморфизм в функциональном программировании — это обобщение свертки списков, которые (как я уже
рассказывал) являются специфическим типом размеченного объединения, на произвольные размеченные объединения.