Depende de qual parte da sua pergunta você coloca a ênfase. Se é especificamente a propriedade de ser anônimo para funções anônimas, na verdade a única resposta é que eles são valores não acoplados . Se você está falando sobre funções em geral, funções anônimas são provavelmente a manifestação mais visível do uso do cálculo lambda em um ambiente funcional, para linguagens de aplicação .
De fato, do ponto de vista do cálculo lambda, as expressões lambda são a construção sintática usada para criar ligações. Lembre-se da notação usada no cálculo lambda:
λ f. λ x . fx
fxfx
Uma linguagem geralmente oferece maneiras, como let
(ML como linguagens, esquema) ou define
(esquema) para criar ligações utilizáveis no nível superior (ou dentro de construções sintáticas mais complexas que funções, como módulos ou objetos), mas a única ferramenta necessária para ligações é o lambda em níveis mais baixos.
Se você observar idiomas como dialetos de esquema ou lisp, a base deles é o cálculo lambda, e muitas formas especiais são realmente lambdas revestidas de açúcar.
Para idiomas concatenativos , a história é um pouco diferente. Lambdas não são necessárias e, na verdade, contraproducentes. Qual é o sentido de definir lambdas anônimas, quando tudo é uma função ?
De alguma forma, existe uma dualidade entre esses dois tipos de manobras. O último é focado na combinação de funções sem pontos e, portanto, tenta representar tudo como funções, enquanto o primeiro trabalha em um cálculo mais elaborado e faz um esforço para ter funções como valores de primeira classe, como quaisquer outros valores da linguagem. A esse respeito, podia-se ver lambdas como resultado desse esforço.
Alguns ponteiros sobre o tópico foram introduzidos (mal) nesta resposta: