Кіріспе

Функционалдық бағдарламалауда катаморфизм (көне грекше κατά – "төменге қарай" және μορφή – "форма, пішін") ұғымы бастапқы алгебрадан кез келген басқа алгебраға бірегей гомоморфизмді білдіреді. Катаморфизмдер кездейсоқ алгебралық деректер түрлеріне тізімдерді жинаудың (fold) жалпылануын ұсынады, оларды бастапқы алгебралар деп сипаттауға болады. Дуальдық ұғым – айналмалы процесті (unfold) жалпылайтын анаморфизм. Гиломорфизм – анаморфизм мен катаморфизмнің біріктірілуі.

Анықтама

Өз-өзіне қатысты қандай да бір санаттағы кейбір эндофунктордың бастапқы алгебрасын қарастырайық. Мұнда – морфизм бар. Ол бастапқы болғандықтан, егер басқа алгебра болса, яғни – морфизм болса, онда – морфизмінен бірегей гомоморфизм болады. Алгебра санатының анықтамасы бойынша, бұл – морфизміне сәйкес келеді, оны әдетте де белгілейді, және мынадай теңдік орындалады: Алгебра контекстінде, бастапқы объектіден бірегей түрде анықталған морфизм деп белгіленеді және осы қатынас арқылы сипатталады:

Терминология және тарих

Әдебиетте тағы бір белгілеу кездеседі: қолданылатын ашық жақшалар "банан жақшалары" деп аталады, осыдан кейін катаморфизмдерді кейде "банан" деп те атайды, бұл туралы Эрик Мейер және авторлар тобы айтқан. Катаморфизм ұғымын бағдарламалау контекстінде енгізген алғашқы жарияланымдардың бірі – Эрик Мейер және авторлар тобының "Бананмен, линзалармен, конверттермен және тікенді сыммен функционалдық бағдарламалау" атты мақаласы болды.

Мысалдар

Біз бірнеше мысалдар келтіреміз, содан кейін Хаскелл бағдарламалау тілінде катамарфизмдерге көбірек бағытталған қарастырамыз.