Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
>>> f = lambda (x, y): x + y
>>> a = (1, 2)
>>> f(a)
3
> (let* ([a 1] [b (+ a 1)]) (+ a b))
3
(let* ([a 1]
[b (+a 1)])
(+ a b)) (let ([a 1])
(let ([b (+a 1)])
(+ a b)))(let ([a 1])
(let ([b (+a 1)])
(+ a b)))((lambda (a)
((lambda (b) (+ a b))
(+ a 1)))
1)
</source
Да, в данном случае это эквивалентно g(f(x)) (в конце концов, в лямбда-счислении всё есть вложенные функции), но в общем случае так говорить не совсем корректно.
Во-вторых, let* и есть императивное последовательное вычисление значений и биндинг их к переменным, сравните:
<source>
(let* ([a 1]
[b 2]
[c (a . + . b)]
[d (b . - . a)])
(c . + . d))
int a = 1;
int b = 2;
int c = a + b;
int d = b - a;
return c + d;
max(obj_list, key=lambda x: x.param)
filter(lambda x: x % 2, lst)
люди, прогающие на функциональных языках сами усложняют себе жизнь, т.к. структурирование у последних просто скверное. В этом плане Python очень силен, т.к. он не станет работать, если код неструктурированО блин, как структурированность с функциональной парадигмой связана вообще?
Откуда идут «функциональные» корни Python