const ifElse = f => g => h => x => f(x) ? g(x) : h(x); const isZero = a => a < 1; const mult = a => b => a * b; const dec = a => a - 1; const factorial = Y(B(ifElse(isZero)(K(1)))(B(S(mult))(C(B)(dec)))); factorial(4);