x + 2 main = print ((plus_1 2) + (plus_2 3)) make_plus_n n = \x -> x + n plus_1 x = make_plus_n 1 plus_2 x = make_plus_n 2 main = print ((plus_1 2) + (plus_2 3))
x + n; }; } auto plus_1 = make_plus_n(1); auto plus_2 = make_plus_n(2); int a = plus_1(2); int b = plus_2(3); std::cout << a << “, ” << b << std::endl;
public: make_plus_n(T an): n(an) { } T operator ()(T x) { return x + n; } }; auto plus_1 = new make_plus_n<int>(1); auto plus_2 = new make_plus_n<int>(2); int a = (*plus_1)(2); int b = (*plus_2)(3); std::cout << a << “, ” << b << std::endl;