Jump to content

Anonymous function

From Simple English Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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

Python

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

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

Uncurried:

fn (x, y) => x * y

Curried:

fn x => fn y => x * y

Point-free:

(op *)

JavaScript

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

Uncurried:

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

Curried:

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

Point-free:

*

C++ 11

Uncurried:

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

Curried:

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

C++ Boost

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

Other websites