È davvero semplice. Quando hai qualche calcolo, come aggiungere 3 a 5, nel tuo programma, quindi creare un thunk di esso significa non per calcolarlo direttamente, ma invece crea una funzione con argomenti zero che la calcola quando è necessario il valore reale.
(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
Nel secondo caso, foo
sarebbe stato chiamato un thunk.
I linguaggi pigri sfociano la linea tra l'associazione di una variabile a un valore e la creazione di una funzione per restituire tale valore, in modo che la scrittura di qualcosa come la prima sopra sia effettivamente trattata come la seconda, sotto il cofano.
possibile duplicato di [Che cos'è un 'thunk'?] (Http://stackoverflow.com/questions/2641489/what-is-a-thunk) – Stephan