Dipende da quale parte della tua domanda hai posto l'accento. Se è specificamente la proprietà di essere anonimi per funzioni anonime, allora l'unica risposta è che sono valori non associati . Se si parla di funzioni in generale, le funzioni anonime sono probabilmente la manifestazione più visibile dell'uso del calcolo lambda in un ambiente funzionale, per i linguaggi applicativi .
In effetti, dal punto di vista del calcolo lambda, le espressioni lambda sono il costrutto molto sintattico utilizzato per creare associazioni. Richiama la notazione usata nel calcolo lambda:
λ f. λ x . fX
fXfX
Un linguaggio di solito offre modi, come let
(ML come linguaggi, schema) o define
(schema) per creare associazioni utilizzabili al livello più alto (o all'interno di costrutti sintattici più complessi di funzioni, come moduli o oggetti), ma l'unico strumento necessario per gli attacchi è la lambda ai livelli più bassi.
Se guardi a lingue come i dialetti schema o lisp, il loro fondamento è il calcolo lambda e molte forme speciali sono davvero lambda ricoperti di zucchero.
Per i linguaggi concatenativi , la storia è leggermente diversa. Le lambda non sono necessarie e in realtà controproducenti. Qual è lo scopo di definire lambda anonimi, quando tutto è una funzione ?
C'è in qualche modo una dualità tra questi due tipi di manguages. Il secondo si concentra sulla combinazione di funzioni prive di punti e cerca quindi di rappresentare tutto come funzioni, mentre il primo lavora su un calcolo più elaborato e si sforza di avere funzioni come valori di prima classe, come qualsiasi altro valore del linguaggio. A questo proposito, si potrebbe vedere lambda come il risultato di quello sforzo.
Alcuni suggerimenti sull'argomento introdotti (male) in questa risposta: