Anonymous function

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

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]