Back to TILs

C++ Lambda

Funções de primeira classe

Em programação funcional funções são cidadães de primeira classe, o que significa que elas se comportam com dados e suportam quaisquer operações que a linguagem permita.

Algumas características das funções de primeira classe são:

Lambdas

Lambdas são funções anônimas (sem um nome) definidas in-place.

//  1   2                           3                               4
   [ ] ( ) { std::cout << "Hello from C++ Lambda!" << std::endl; } ( );

Vamos ver o que cada grupo significa:

Programação funcional com lambdas

// f(x,y) = x² + y² + 2xy;
std::function<int(int,int)> fxsquare = [](int x, int y) -> int {
  int xsquare = [](int x) -> int { return x * x; }(x);
  int ysquare = [](int y) -> int { return y * y; }(y);
  int twoxy   = [](int x, int y) -> int { return 2 * x * y; }(x,y);
  return xsquare + ysquare + twoxy;
}

cout << fxsquare(5,3) << endl; // 64

Referências