Кіріспе
Функцияны атаусыз қайта шақыру Компьютерлік ғылымда анонимді рекурсия – функцияны тікелей атаусыз қайта шақыру. Бұл жоғары реттік функцияны пайдалану арқылы, функцияны аргумент ретінде жіберіп, оны шақыру арқылы немесе жасырын түрде, ағымдағы контекстке байланысты белгілі бір функцияларға, әсіресе "қазіргі функцияға" немесе кейде "қазіргі функцияны шақырушы функцияға" қол жеткізуге мүмкіндік беретін рефлексия мүмкіндіктері арқылы іске асырылуы мүмкін. Бағдарламалау практикасында анонимді рекурсия, әсіресе, оны қолдау үшін рефлексиялық мүмкіндіктерді ұсынатын JavaScript-те қолданылады. Дегенмен, жалпы бағдарламалау практикасында бұл жаман стиль деп есептеледі және атаулы функциялармен рекурсия қолдану ұсынылады. Функцияны аргумент ретінде жіберу арқылы анонимді рекурсия кез келген тілде мүмкін, бірақ бұл практикада сирек қолданылады, себебі ол атаумен тікелей қайталанудан ұзақ және нашар түсініледі. Теориялық компьютерлік ғылымда анонимді рекурсия маңызды, өйткені ол рекурсияны атаулы функцияларсыз іске асыруға болатынын көрсетеді. Бұл әсіресе лямбда-есептеу үшін маңызды, ол анонимді унитарлық функцияларға ие, бірақ кез келген рекурсивті функцияны есептеуге қабілетті. Бұл анонимді рекурсияны белгілі бір түйіндемелер арқылы жасауға болады.
In computer science, anonymous recursion is recursion which does not explicitly call a function by name. This can be done either explicitly, by using a higher order function – passing in a function as an argument and calling it – or implicitly, via reflection features which allow one to access certain functions depending on the current context, especially "the current function" or sometimes "the calling function of the current function". In programming practice, anonymous recursion is notably used in JavaScript, which provides reflection facilities to support it. In general programming practice, however, this is considered poor style, and recursion with named functions is suggested instead. Anonymous recursion via explicitly passing functions as arguments is possible in any language that supports functions as arguments, though this is rarely used in practice, as it is longer and less clear than explicitly recursing by name. In theoretical computer science, anonymous recursion is important, as it shows that one can implement recursion without requiring named functions. This is particularly important for the lambda calculus, which has anonymous unary functions, but is able to compute any recursive function. This anonymous recursion can be produced generically via fixed point combinators.
Қолдану
Анонимді рекурсия ең алдымен анонимді функцияларға рекурсия жасауға мүмкіндік беру үшін қолданылады, әсіресе олар жабылу құрағанда немесе функцияның атын байланыстырудан аулақ болу үшін кері шақыру ретінде қолданылғанда. Анонимді рекурсия негізінен "ағымдағы функцияны" шақырудан тұрады, бұл тікелей рекурсияға алып келеді. Анонимді жанама рекурсия да мүмкін, мысалы, "шақырушыны (алдыңғы функцияны)" шақыру арқылы немесе, сирек жағдайларда, шақыру стегімен жоғары көтерілу арқылы, және бұл өзара рекурсияны жасау үшін тізбектеледі. "Ағымдағы функцияның" өзіне сілтемесі объектіге бағытталған бағдарламалаудағы "this" кілт сөзінің функционалдық баламасы болып табылады, ол ағымдағы контекстке сілтеме жасауға мүмкіндік береді. Анонимді рекурсия атаулы функциялар үшін де қолданылуы мүмкін, оларды атымен шақырудың орнына, мысалы, ағымдағы функцияда рекурсия жасалып жатқанын көрсету үшін немесе функцияның атын өзгертпей қайта атауға мүмкіндік беру үшін. Дегенмен, бағдарламалау стилі тұрғысынан мұндай амал көбінесе жасалмайды.