function compose(f,g)
{ return function()
{ return f.call(this, g.apply(this, arguments)); };}
var square = function(x){return x*x;};
var squareofsum = compose(square, sum);
squareofsum(2,3)
이게 25가 나오는데 return f.call(this, g.apply(this, arguments)); 이부분 잘 모르겟슴
g가 어떻게 정의되어있는질 모르겠는데 어떻게 알지 이걸;;