Function Literals

double parabola(double x, double y)
{
	return integrate(0.0, x,
		delegate double(double x)
		{   return y * x; }
		)
}

double integrate(double x1, double x2,
	double delegate(double dx) f)
{
	double sum = 0;
	double dx = 0.0001;

	for (double x = x1; x < x2; x += dx)
		sum += f(x) * dx;
	return sum;
}