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