Es ist wirklich einfach. Wenn Sie etwas Berechnung, wie Hinzufügen von 3 bis 5, in Ihrem Programm haben, bedeutet das Erstellen eines Thunk davon nicht, um es direkt zu berechnen, sondern erstellen Sie stattdessen eine Funktion mit null Argumente, die es berechnen, wenn der tatsächliche Wert benötigt wird.
(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
Im zweiten Fall foo
wäre ein Thunk aufgerufen werden.
Lazy Sprachen verwischen die Grenze zwischen dem Binden einer Variablen an einen Wert und dem Erstellen einer Funktion, um diesen Wert zurückzugeben, so dass das Schreiben von etwas wie dem ersten Formular tatsächlich wie das zweite unter der Haube behandelt wird.
mögliche Duplikate von [Was ist ein 'Thunk'?] (Http://stackoverflow.com/questions/2641489/what-is-a-thunk) – Stephan