Il est vraiment très simple. Lorsque vous avez quelques calculs, comme l'ajout de 3 à 5, dans votre programme, puis la création d'un thunk de cela signifie pas de calculer directement, mais au lieu de créer une fonction avec des arguments zéro pour le calcul lorsque la valeur réelle est nécessaire.
(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
Dans le second cas, foo
serait appelé un thunk.
Paresseux langues brouiller la ligne entre la liaison d'une variable à une valeur et de créer une fonction pour renvoyer la valeur, de sorte que le fait d'écrire quelque chose comme le premier formulaire ci-dessus est effectivement traitée comme la seconde, sous le capot.