Node:thunk, Next:tick, Previous:thundering herd problem, Up:= T =

thunk /thuhnk/ n.

1. [obs.]"A piece of coding which provides an address",

according to P. Z. Ingerman, who invented thunks in 1961 as a way

of binding actual parameters to their formal definitions in

Algol-60 procedure calls. If a procedure is called with an

expression in the place of a formal parameter, the compiler

generates a thunk which computes the expression and leaves the

address of the result in some standard location. 2. Later

generalized into: an expression, frozen together with its

environment, for later evaluation if and when needed (similar to

what in techspeak is called a `closure'). The process of

unfreezing these thunks is called `forcing'. 3. A stubroutine, in an overlay programming

environment, that loads and jumps to the correct overlay. Compare

trampoline. 4. People and

activities scheduled in a thunklike manner. "It occurred to me

the other day that I am rather accurately modeled by a thunk -- I

frequently need to be forced to completion." -- paraphrased from

a plan file.

Historical note: There are a couple of onomatopoeic myths

circulating about the origin of this term. The most common is

that it is the sound made by data hitting the stack; another

holds that the sound is that of the data hitting an accumulator.

Yet another suggests that it is the sound of the expression being

unfrozen at argument-evaluation time. In fact, according to the

inventors, it was coined after they realized (in the wee hours

after hours of discussion) that the type of an argument in

Algol-60 could be figured out in advance with a little

compile-time thought, simplifying the evaluation machinery. In

other words, it had `already been thought of'; thus it was

christened a `thunk', which is "the past tense of `think' at two

in the morning".

The Jargon File, Version 4.2.2, 20 Aug 2000 · 第 1658 / 1941 题