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.




 
option explicit
class closure
 
	private composition
 
	sub compose( f1, f2 )
		composition = f2 & "(" & f1 & "(p1))"
	end sub
 
	public default function apply( p1 )
		apply = eval( composition )
	end function
 
	public property get formula
		formula = composition
	end property
 
end class 
 