Кіріспе

1=Y f = f (Y f) жоғары реттік функциясы. Компьютерлік ғылымдағы комбинаторлық логикада, тұрақты нүкте комбинаторы (немесе бекітілген нүкте комбинаторы) – функцияны аргумент ретінде қабылдайтын жоғары реттік функция, және егер ол болса, өзінің аргумент функциясының тұрақты нүктесін (өз-өзіне бейнеленетін мән) қайтарады. Формальды түрде, егер Y тұрақты нүкте комбинаторы болса және f функциясының бір немесе бірнеше тұрақты нүктелері болса, онда Y осы тұрақты нүктелердің бірі болады, яғни.

Тұрақты нүкте комбинаторларын лямбда-есептеуде және функционалдық бағдарламалау тілдерінде анықтауға болады, және олар рекурсивті анықтамаларға мүмкіндік береді.

Ламбдалық есептегі Y комбинаторы

Классикалық типтелмеген лямбда-есептеуде әрбір функцияның тұрақты нүктесі болады. Haskell Curry-дің парадоксалды комбинаторы Y-тің нақты бір іске асырылуы мына төмендегідей берілген:

(Бұл жерде біз лямбда-есептеудің стандартты белгілері мен конвенцияларын қолданамыз: Y – бір аргумент f қабылдайтын және бірінші нүктеден кейін келетін бүкіл өрнекті қайтаратын функция; өрнек бір аргумент x қабылдайтын функцияны білдіреді, ол функция ретінде қарастырылады және өрнекті қайтарады, мұндағы x өзіне-өзі қолданылады. Өрнектердің жанына орналасуы функцияны қолдануды білдіреді, сол жақтан ассоциативті және нүктеден жоғары басымдыққа ие.)

Қолданылуы

Бір айнымалысы бар функцияға қолданғанда, Y комбинаторы көбінесе тоқтамайды. Көбірек қызығушылық тудыратын нәтижелерді екі немесе одан көп айнымалылары бар функцияларға Y комбинаторын қолдану арқылы алуға болады. Қосымша айнымалыларды сандық санауға немесе индекс ретінде пайдалануға болады. Соның нәтижесінде алынған функция императивті тілдегі while немесе for циклы сияқты жұмыс істейді. Осылай қолданғанда, Y комбинаторы қарапайым рекурсияны жүзеге асырады. Ламбда-есептеуі көптеген бағдарламалау тілдерінде мүмкін болғандай, функцияның өзінің анықтамасында термин ретінде пайда болуына рұқсат бермейді, бірақ функцияны рекурсивті түрде қолданатын жоғары деңгейдегі функцияға аргумент ретінде беруге болады. Y комбинаторы Керридің парадоксын жүзеге асыру үшін де қолданылуы мүмкін. Керридің парадоксының мәні – типтелмеген ламбда-есептеуі дедуктивті жүйе ретінде дұрыс емес, ал Y комбинаторы анонимді өрнектің нөлді немесе тіпті көп мәндерді білдіруге мүмкіндік беру арқылы осыны көрсетеді. Бұл математикалық логикамен үйлеспейді.

Құндылықтар мен домендер

Көптеген функциялардың тұрақты нүктелері жоқ, мысалы, Черч кодтамасын қолдану арқылы табиғи сандарды лямбда-есептеуде бейнелеуге болады, және осы f функциясын лямбда-есептеуде анықтауға болады. Дегенмен, енді оның домені тек табиғи сандарды ғана емес, барлық лямбда-өрнектерді қамтиды. Y комбинаторы f-қа қолданылғанда f үшін тұрақты нүкте шығады, бірақ бұл тұрақты нүкте табиғи санға сәйкес келмейді. Егер Y f-ті нақты бағдарламалау тілінде есептеуге тырыссақ, шексіз цикл орын алады.

Функция мен іске асыру

Белгілі нүктелік комбинатор математикада анықталып, кейін басқа тілдерде іске асырылуы мүмкін. Жалпы математика функцияны оның экстенсионалдық қасиеттеріне сүйене отырып анықтайды. Яғни, егер екі функция бірдей бейнелеуді жасаса, олар тең болып саналады. Ламбда-есептеу және бағдарламалау тілдері функцияның өзін интенсионалдық қасиет ретінде қарастырады. Функцияның өзі оның іске асырылуына негізделген. Ламбда-есептеудегі функция (немесе термин) – математикалық функцияның іске асырылуы. Ламбда-есептеуде белгілі нүктелік комбинатордың математикалық анықтамасын қанағаттандыратын бірнеше комбинатор (іске асырылым) бар.

"Комбинатор" терминінің анықтамасы

Комбинациялық логика – жоғары ретті функциялар теориясы. Комбинатор – еркін айнымалылары жоқ жабық ламбда өрнегі. Комбинаторлар оларды айнымалылар деп атамай, мәндерді өрнектегі тиісті орындарына бағыттау үшін біріктіріле алады.

Жалпы ақпарат

Рекурсияны іске асыру үшін тұрақты нүктелік комбинаторларды қолдануға болады, сондықтан оларды рекурсивті есептеулердің белгілі бір түрлерін сипаттауға болады, мысалы, тұрақты нүктелік итерация, итерациялық әдістер, реляциялық деректер базасындағы рекурсивті қосылу, дерек ағынын талдау, контекстсіз грамматикадағы терминал емес элементтердің FIRST және FOLLOW жиынтықтары, транзитивті жабу және басқа да жабу операцияларының түрлері. Кез келген кіріс мәні тұрақты нүкте болатын функция сәйкестік функциясы деп аталады. Формальды түрде:

Жалпылама квантификациядан айырмашылығы, тұрақты нүктелік комбинатор -ның тұрақты нүктесі болатын бір мәнді құрастырады. Тұрақты нүктелік комбинатордың ерекше қасиеті – ол кез келген берілген функция үшін тұрақты нүкте құрастыра алады. Басқа функциялардың ерекше қасиеті бар: бір рет қолданғаннан кейін, одан әрі қолданудың қандай да бір әсері болмайды. Мұндай функциялар идемпотентті деп аталады (сонымен қатар «Проекция (математика)» дегенді қараңыз). Мұндай функциялардың мысалы – барлық жұп сандар үшін 0, ал барлық тақ сандар үшін 1 қайтаратын функция. Ламбда-есептеуде, есептеу тұрғысынан алғанда, тұрақты нүктелік комбинаторды сәйкестік функциясына немесе идемпотентті функцияға қолдану көбінесе тоқтамайтын есептеуге әкеледі. Мысалы, біз келесіні аламыз:

мұнда алынған өрнек тек өзіне ғана келуге болады және ол шексіз циклді білдіреді. Тұрақты нүктелік комбинаторлар есептеудің барлық шектеулі модельдерінде міндетті түрде бола бермейді. Мысалы, олар жай типтелген Ламбда-есептеуде жоқ. Y комбинаторы тілде рекурсияны тікелей қолдаудың қажеті болмай, қайта жазу ережелерінің жиынтығы ретінде рекурсияны анықтауға мүмкіндік береді. Анонимді функцияларды қолдайтын бағдарламалау тілдерінде тұрақты нүктелік комбинаторлар анонимді рекурсивті функцияларды анықтауға және пайдалануға мүмкіндік береді, яғни мұндай функцияларды идентификаторларға байланыстырудың қажеті жоқ. Осы жағдайда тұрақты нүктелік комбинаторларды пайдалану кейде анонимді рекурсия деп аталады.