const curry = R.curry((fns, ary) => R.ap(fns, ary));
const applyMultiAndAdd = curry([R.multiply(2), R.add(3)]);
const res = applyMultiAndAdd([1,2,3]);
console.log(res); //[2, 4, 6, 4, 5, 6]
const compose = R.compose(
R.reverse,
R.ap([R.multiply(2), R.add(3)])
);
const res1 = compose([1,2,3]);
console.log(res1); //[6, 5, 4, 6, 4, 2]
const addOne = R.curry( (x) => R.add(1, x))
const pipe = R.pipe(
R.ap([R.multiply(2), R.add(3)]),
R.reverse,
R.map(addOne)
);
const res2 = pipe([1,2,3]);
console.log(res2); //[7, 6, 5, 7, 5, 3]