Task

Create a function, compose,   whose two arguments   f   and   g,   are both functions with one argument.



The result of compose is to be a function of one argument, (lets call the argument   x),   which works like applying function    f    to the result of applying function    g    to    x.



Example

 compose(f, g) (x) = f(g(x))



Reference: Function composition

Hint: In some languages, implementing compose correctly requires creating a closure.




double sin (double v)	{ return Math.sin(v); }
double asin (double v)	{ return Math.asin(v); }
Var compose (Func f, Func g, double d)	{ return f(g(d)); }
 
void button1_onClick (Widget widget)
{
	double d = compose(sin, asin, 0.5);
	label1.setText(d.toString(9));
}