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
Luokka:Funktionaalinen ohjelmointi