¿Para "combinar" funciones en javascript de manera funcional?

Estoy aprendiendo programación funcional y me pregunto si hay una manera de "combinar" funciones como esta:

function triple(x) {
    return x * 3;
}
function plusOne(x) {
    return x + 1;
}
function isZero(x) {
    return x === 0;
}
combine(1); //1
combine(triple)(triple)(plusOne)(1); // 10
combine(plusOne)(triple)(isZero)(-1); // true

Si el para es una función, "combina" la función en sí misma, y si no, devolverá el resultado final. ¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta