Анонимна функция: Разлика между версии

Изтрито е съдържание Добавено е съдържание
м fixlink
м без   интервал
Ред 9:
Ако дадена функция се използва само веднъж или ограничен брой пъти, е подходящо да бъде създадена като анонимна, тъй като това я прави синтактично по-лека, отколкото именувана функция. Във функционалните езици и други езици с функции от първи клас анонимните функции се използват навсякъде, където те изпълняват същата роля за вида на функцията, както правят литералите за други типове данни.
 
Произходът на анонимните функции е свързан с работата на [[Алонсо Чърч]] и неговата теория за [[ламбда смятане]], (създадена преди ерата на компютрите), в която всички функции са анонимни.<ref>Fernandez, Maribel (2009),&nbsp;[https://books.google.bg/books?id=FPFsnzzebhQC&pg=PA33&redir_esc=y#v=onepage&q&f=false ''Models of Computation: An Introduction to Computability Theory''], Undergraduate Topics in Computer Science, Springer Science & Business Media, p.&nbsp; 33, [[International Standard Book Number|ISBN]]&nbsp;[[%D0%A1%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%BD%D0%B8%3ABookSources/9781848824348|9781848824348]],&nbsp;<q>The Lambda calculus ... was introduced by Alonzo Church in the 1930s as a precise notation for a theory of anonymous functions</q></ref> В няколко програмни езика анонимните функции се представят чрез използването на ключовата дума ламбда, а анонимните функции често са посочени като ламбди или ламбда абстракции. Анонимните функции се въвеждат за пръв път в програмния език [[Lisp (език за програмиране)|Lisp]] през 1958 г. Оттогава непрекъснато се увеличава броя на съвременните езици, които поддържат анонимни функции.
 
Анонимните функции са форма на вложена функция, в която е позволен достъпа до променливи в обхвата на съдържащата функция. Ето защо анонимните функции трябва да бъдат имплементирани чрез използването на затваряне. За разлика от именуваните вложени функции, те не могат да бъдат рекурсивни без помощта на т.нар. оператор на неподвижната точка (т.нар. анонимна неподвижна точка или анонимна рекурсия).<ref>''[https://www.cs.cornell.edu/Courses/cs3110/2012sp/lectures/lec29-fixpoints/lec29.html "Lecture 29: Fixpoints and Recursions"]. CS3110 Spring 2012&nbsp;:: Data Structures and Functional Programming''. Cornell University – Computer Science. Посетен на 3 декември 2014.</ref>