Функции первого класса: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 4:
Термин был впервые использован {{iw|Стрэчи, Кристофер|Кристофером Стрэчи|en|Christopher Strachey}} в контексте «функции как объекты первого класса» в середине 1960-х<ref name="strachey">Rod Burstall, «Christopher Strachey—Understanding Programming Languages», ''[[Higher-Order and Symbolic Computation]]'' '''13''':52 (2000)</ref>.
 
Функции первого класса являются неотъемлемой частью [[Функциональное программирование|функционального программирования]], в котором использование [[Функция высшего порядка|функций высшего порядка]] является стандартной практикой. Простым примером функции высшего порядка будет функция ''[[Map (программирование)|Map]]'', которая принимает в качестве своих аргументов функцию и список и возвращается список, после применения функции к каждому элементу списка. Чтобы язык программирования поддерживал [[''Map]]'', он должен поддерживать передачу функций как аргумента.
 
Существуют некоторые сложности в реализации передачи функций как аргументов и возвращении их как результата, особенно в присутствии [[:en:non-local variable|нелокальных переменных]], введенных во [[:en:Nested function|вложенных]] и [[Анонимная функция|анонимных функциях]]. Исторически они были названы [[Проблема фунарга|проблемами фунарга]], от английского «function argument»<ref>[[Joel Moses]]. [https://dspace.mit.edu/handle/1721.1/5854 «The Function of FUNCTION in LISP, or Why the FUNARG Problem Should be Called the Environment Problem»]. MIT AI Memo 199, 1970.</ref>.