Кіріспе

Өзінің анықтамасында өзіне сілтеме жасайтын дерек түрі. Компьютерлік бағдарламалау тілдерінде рекурсивті дерек түрі (рекурсивті анықталған, индуктивті анықталған немесе индуктивті дерек түрі деп те аталады) – осы дерек түрінің өзінен басқа да мәндерді қамтитын мәндерге арналған дерек түрі. Рекурсивті типтегі деректер көбінесе бағытталған графтар түрінде қарастырылады. Компьютер ғылымында рекурсияның маңызды қолданылуы – тізімдер және ағаштар сияқты динамикалық дерек құрылымдарын анықтауда. Рекурсивті дерек құрылымдары орындалу уақытындағы қажеттіліктерге байланысты кез келген үлкен өлшемге дейін динамикалық түрде өсе алады; ал статикалық массивтің өлшемі компиляция уақытында белгіленуі керек. Кейде "индуктивті дерек түрі" термині міндетті түрде рекурсивті емес алгебралық дерек түрлері үшін де қолданылады.

Изорекурсивті типтер

Изорекурсивті типтерде рекурсивті тип және оның кеңейтілуі (немесе ашылуы) (мұндағы белгі Z-нің X-тегі барлық мысалдары Y-мен алмастырылатынын көрсетеді) — ерекше термин құралымдары бар ерекше (және бөлек) типтер болып табылады, олар әдетте ролл және ашылу деп аталады және олардың арасында изоморфизм құрайды. Нақтырақ айтқанда, және , ал бұл екеуі кері функциялар.

Тең рекурсивті типтер

Тең рекурсивті ережелерге сәйкес, рекурсивті тип және оның ашылуы тең болады – яғни, осы екі типтік өрнек бірдей типті білдіреді деп түсініледі. Шындығында, тең рекурсивті типтердің көптеген теориялары одан да әрі барып, бірдей "шексіз кеңеюі" бар кез келген екі типтік өрнектер эквивалентті екенін анықтайды. Осы ережелердің салдарынан, тең рекурсивті типтер типтік жүйеге изорекурсивті типтерге қарағанда әлдеқайда көп күрделілік қосады. Типтерді тексеру және типті анықтау сияқты алгоритмдік мәселелер тең рекурсивті типтер үшін де қиынырақ. Тең рекурсивті типте тікелей салыстыру мағынасыз болғандықтан, оларды O(n log n) уақытында канондық түрге келтіруге болады, оны салыстыру оңай. Изорекурсивті типтер номиналды объектіге бағытталған бағдарламалау тілдерінде кездесетін өзіне-өздік сілтемелі (немесе өзара сілтемелі) типтік анықтамалардың нысанын қамтиды, сондай-ақ объектілер мен сыныптардың типтік семантикасында да пайда болады. Функционалдық бағдарламалау тілдерінде изорекурсивті типтер (дерек типтері түрінде) де жиі кездеседі.