Я не могу обернуть мою голову вокруг следующей композиции функций:Вложенные функции Состав
function plus_one(x) {
return x + 1;
}
function trans(f) {
return function(x) {
return 2 * f(2 * x);
};
}
function twice(f) {
return function(x) {
return f(f(x));
}
}
При попытке оценить ((twice)(trans))(plus_one)(1)
Это то, что я получаю, предполагая, что plus_one
является е f(2f(2x))=2f(2*2f(2x))=2f(4f(2x)) = 2*(4*(2 + 1)) = 24.
Но ввести его в intrepreter показывает, что это 20.
Любая помощь с благодарностью.
Большое спасибо в продвинутом виде.
почему 'лямбда-calculus' тег? – naomik