Зачем использовать лямбду?
Чтобы ответить на вопрос в вашем заголовке, мы бы использовали лямбду, потому что нам нужна процедура или функция вместо значения. Именно так Racket определяет функции.
Как вы уже определили, в первой строке присваивается значение от 1 до plus-one
, а во второй - процедура добавления от 0 до 1 к * 1006. *.
Почему вы предпочитаете, чтобы процедура имела просто значение?
Это плохой пример, потому что эта процедура всегда будет возвращать одно и то же значение, но представьте, что нам нужна функциядобавить один к любому номеру. Ну, тогда у нас будет что-то вроде этого:
(define plus-one-n (lambda (n) (+ n 1)))
Теперь мы можем вызвать (plus-one-n 3)
, чтобы получить 4
, или (plus-one-n 1336)
, чтобы получить 1337
.
Процедуры без каких-либоПараметры полезны, если мы повторяем один и тот же код в разных местах. Если нам нужно добавить единицу в ноль много раз, мы можем сгруппировать этот код в процедуру, а затем просто вызвать ее. Если затем нам нужно изменить весь этот код, нам нужно только изменить тело процедуры. Поэтому, если наши требования изменяются так, что мы теперь хотим добавить два к нулю, нам нужно всего лишь изменить тело процедуры (хотя мы, вероятно, также захотим изменить имя в этом случае).