Это действительно просто. Когда у вас есть какие-то вычисления, например добавление от 3 до 5, в вашей программе, то создание этого файла означает не, чтобы вычислить его напрямую, а вместо этого создать функцию с нулевыми аргументами, которая будет вычислять ее, когда требуется фактическое значение.
(let ((foo (+ 3 5))) ; the calculation is performed directly, foo is 8
;; some other things
(display foo)) ; foo is evaluated to 8 and printed
(let ((foo (lambda() (+ 3 5)))) ; the calculation is delayed, foo is a
; function that will perform it when needed
;; some other things
(display (foo))) ; foo is evaluated as a function, returns 8 which is printed
Во втором случае, foo
будет называться преобразователь.
Ленивые языки размывают линию между привязкой переменной к значению и созданием функции для возврата этого значения, так что запись чего-то вроде первой формы выше фактически рассматривается как вторая, под капотом.
Возможный дубликат [Что такое 'thunk'?] (Http://stackoverflow.com/questions/2641489/what-is-a-thunk) – Stephan