Para "combinar" funções em javascript de forma funcional?

Estou aprendendo programação funcional e me pergunto se existe uma maneira de "combinar" funções 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

Se o para for uma função, ele "combina" a função em si e, se não, retornará o resultado final. Obrigado!