Я изучаю схему. Я знаю, как использовать как лямбда-выражения, так и выражения let.
Однако я изо всех сил пытаюсь выяснить, в чем смысл использования лямбды. Разве вы не можете делать все с помощью Lambda?
Было бы особенно полезно увидеть пример ситуации, когда лямбда-выражение является лучшим выбором, чем let.
Еще одна вещь - есть ли ситуации, когда let более полезен, чем лямбда? Если так, то такой пример был бы также хорош.
Редактировать: Меня также интересуют контрасты define и lambda, поскольку они, похоже, выполняют аналогичные задачи.
Обновление:
Спасибо за помощь всем. После прочтения ваших ответов я еще немного изучил лямбду / let / define и теперь понимаю это намного лучше.
Я наткнулся на отличный пример использования лямбды - возвращение анонимных функций из процедур. Например, процедура operateTwice
ниже возвращает анонимную функцию, основанную на параметрах, переданных в процедуру:
(define operateTwice
(lambda (op1 op2)
(lambda (x y)
(op2 (op1 x y) y))))
((operateTwice * +) 2 3) ;equivalent to: (+ (* 2 3) 3), or in standard notation 2*3+3
Выход:
9