Anonymous function - Simple English Wikipedia, the free encyclopedia

In computer science and mathematics, an anonymous function is a function with no name. Usually, a function is written like: . It can be written anonymously as . Anonymous functions exist in most functional programming languages and most other programming languages where functions are values.

Examples in some programming languages[change | change source]

Each of these examples show a nameless function that multiplies two numbers.

Python[change | change source]

Uncurried (not curried):

(lambda x, y: x * y) 

Curried:

(lambda x: (lambda y: x * y)) 

When given two numbers:

>>>(lambda x: (lambda y: x * y)) (3) (4) 12 

Haskell[change | change source]

Curried:

\x -> \y -> x * y 
\x y -> x * y 

When given two numbers:

>>> (\x -> \y -> x * y) 3 4 12 

The function can also be written in point-free (tacit) style:

(*) 

Standard ML[change | change source]

Uncurried:

fn (x, y) => x * y 

Curried:

fn x => fn y => x * y 

Point-free:

(op *) 

JavaScript[change | change source]

Uncurried:

(x, y) => x * y 
function (x, y) {   return x * y; } 

Curried:

x => y => x * y 
function (x) {   return function (y) {     return x * y;   }; } 

Scheme[change | change source]

Uncurried:

(lambda (x y) (* x y)) 

Curried:

(lambda (x) (lambda (y) (* x y))) 

Point-free:

*

C++ 11[change | change source]

Uncurried:

[](int x, int y)->int { 	return x * y; }; 

Curried:

[](int x) { 	return [=](int y)->int 	{ 		return x * y; 	}; }; 

C++ Boost[change | change source]

Uncurried:

_1 * _2 

Note: What you need to write boost lambda is to include <boost/lambda/lambda.hpp> header file, and using namespace boost::lambda, i.e.

#include <boost/lambda/lambda.hpp> using namespace boost::lambda; 

Related pages[change | change source]

Other websites[change | change source]