you can start with
var chain = x=>f=>f?chain(f(x)):x; chain(x)(h)(g)(f)();
var _ = (f,...y)=>x=>f(x,...y); var sum = (x,y)=>x+y; chain(1)(_(sum,1))()
var $ = (x,...f)=>f.reduce((x,f)=>f(x),x); $(1,_(sum,1));
var sum1 = _($,_(sum,1)); sum1(1);