Я изучаю схему. Я знаю, как использовать выражения лямбда и 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