Небольшая задача на Пайтоне
Вот вам небольшая задача на Пайтоне, для того, чтобы понять как у вас с функциональным программированием. Выполнить надо в уме (я смог, значит это возможно). Что вернёт следующее выражение:
(lambda x:x(x))(lambda z: lambda y:z)(1)(2)(3)Добавлено позднее: если
(function (x) x(x))(function (z) function (y) z)(1)(2)(3)
Комментарии 16
(function(x) {
return x(x)
})(function(z){
return function(y) {
return z;
}
})(1)(2)(3)
я вначале решил, что это нечто вроде y combinator, но потом оказалось просто
с питоновскими лямбдами я не справился, а когда переписал в знакомом виде, всё получилось
function (x) x(x))(
должно быть
(function (x) x(x))(
в принципе, самая сложная
Понять легко, мне было сложно сначала удержать в памяти несколько объектов, потом справился :)
Взял блокнот и ручку
А так — путаешься.
echo 2;
а можно подробное решение? так и не разобрался)