Кіріспе
Бір немесе бірнеше функцияны кіріс ретінде қабылдайтын немесе функцияны нәтиже ретінде қайтаратын функция. Математика мен компьютер ғылымында жоғары реттік функция (HOF) – төмендегілердің кемінде біреуін істейтін функция: бір немесе бірнеше функцияны аргумент ретінде қабылдайды (яғни процедуралық параметр, ол өзі процедураның параметрі болып табылады), немесе функцияны нәтижесі ретінде қайтарады. Қалған барлық функциялар бірінші реттік функциялар болып табылады. Математикада жоғары реттік функциялар операторлар немесе функционалдар деп те аталады. Есептеудегі дифференциалдық оператор осыған бір мысал, себебі ол функцияны оның туындысына, сонымен қатар функцияға бейімдейді. Жоғары реттік функцияларды математикадағы "функтор" сөзінің басқа қолданылуымен шатастырмау керек, толық мәлімет үшін Functor (аңдатпа) бетін қараңыз. Типтелмеген лямбда-есептеуде барлық функциялар жоғары реттік болып табылады; ал типтелген лямбда-есептеуде, одан көптеген функционалдық бағдарламалау тілдері туындайды, бір функцияны аргумент ретінде қабылдайтын жоғары реттік функциялар белгілі бір типтегі мәндер болып табылады.
In mathematics and computer science, a higher order function (HOF) is a function that does at least one of the following:
takes one or more functions as arguments (i. e. a procedural parameter, which is a parameter of a procedure that is itself a procedure),
returns a function as its result. All other functions are first order functions. In mathematics higher order functions are also termed operators or functionals. The differential operator in calculus is a common example, since it maps a function to its derivative, also a function. Higher order functions should not be confused with other uses of the word "functor" throughout mathematics, see Functor (disambiguation). In the untyped lambda calculus, all functions are higher order; in a typed lambda calculus, from which most functional programming languages are derived, higher order functions that take one function as argument are values with types of the form .
Макролар
Макростар жоғары ретті функциялардың кейбір нәтижелерін қол жеткізу үшін де пайдаланылуы мүмкін. Дегенмен, макростар айнымалыны ұстау мәселесін оңай шеше алмайды; олар сондай-ақ үлкен көлемде кодтың дубликациялануына әкелуі мүмкін, бұл компиляторға оңтайландыруды қиындатуы мүмкін. Макростар әдетте күшті түрлендірілмеген, бірақ күшті түрлендірілген кодты жасауы мүмкін.
Динамикалық кодты бағалау
Басқа императивті бағдарламалау тілдерінде жоғары тәртіпті функциялар арқылы алынған кейбір алгоритмдік нәтижелерді бағалау аясында кодты (кейде Eval немесе Execute операциялары деп аталады) динамикалық түрде орындау арқылы қол жеткізуге болады. Бұл тәсілдің айтарлықтай кемшіліктері болуы мүмкін: орындалатын аргумент коды көбінесе статикалық түрде тексерілмейді; мұндай тілдер әдетте орындалатын кодтың дұрыстығы мен қауіпсіздігін анықтау үшін динамикалық типтеуге сенеді. Аргумент көбінесе мәні орындалу уақытына дейін белгілі болмайтын жол түрінде беріледі. Бұл жол бағдарлама орындалу кезінде компиляциялануы (уақытында компиляциялау арқылы) немесе интерпретациялануы керек, бұл орындалу кезінде қосымша жүктеме тудырады және көбінесе аз тиімді кодты жасайды.
The argument code to be executed is usually not statically typed; these languages generally rely on dynamic typing to determine the well formedness and safety of the code to be executed. The argument is usually provided as a string, the value of which may not be known until run time. This string must either be compiled during program execution (using just in time compilation) or evaluated by interpretation, causing some added overhead at run time, and usually generating less efficient code.