Lambda (anonyymi funktio)

Lambda eli anonyymi funktio on tietojenkäsittelytieteessä funktio, jota ei ole sidottu muuttujaan tai muuhun tunnisteeseen. Muita nimityksiä sille ovat funktioliteraali, lambda-abstraktio ja lambdalauseke.

Lambda saa nimensä Alonzo Churchin lambdakalkyylistä, matemaattisen logiikan mallista, jossa kaikki funktiot ovat anonyymejä.

Anonyymit funktiot eri ohjelmointikielissä

C++ 
C++ tukee C++14-versiosta lähtien lambda-operaattoreita ilman konkreettisia tyyppejä auto-määrityksellä.

auto lambda = [](auto x, auto y) {return x + y;};

Haskell 
Haskell käyttää tiivistä syntaksia anonyymeille funktioille:

 \x -> x * x

 map (\x -> x * x) [1, 2, 3, 4, 5] -- palauttaa [1, 4, 9, 16, 25]

Seuraavat funktiomäärittelyt vastaavat toisiaan täysin:
 f x y = x + y
 f x = \y -> x + y
 f = \x y -> x + y

JavaScript 
JavaScriptissä

 ((foo, bar) => "Ecmascript".replace(foo, bar))("Ecma", "Java") //"Javascript"

 [0,1,2,3,4].reduce((acc, cur) => acc + cur, 0); //10

Lisp 
Lispissä

 (lambda (arg) (* arg arg))

 ((lambda (x y) (* x y)) 5 10) ;50

Python 
Pythonissa anonyymia funktiota voi käyttää esimerkiksi listan manipulointiin seuraavasti:

 lista = [1, 2, 3, 4, 5]
 potenssit = list(map(lambda x: x * x, lista)) #[1, 4, 9, 16, 25]

Ruby 
Ruby 1.9-versioista eteenpäin lambdoja voi luoda kahdella tavalla.

 joku_lambda = lambda { |x| x**x } #1.8 lähtien
 
 toinen_lambda = -> (y){ y+y*y } #'->' kreikan λ-kirjaimesta (lambda)
 
 ei_lambda = proc { || ... } #vanhentunut

Lähteet 

Funktionaalinen ohjelmointi