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".
Related:
Pascal n.
An Algol-descended language designed by
Niklaus Wirth on the CDC 6600 around 1967-68 as an instructional
tool for elementary programming. This language, designed primarily
to keep students from shooting themselves in the foot and thus
extremely restrictive from a general-purpose-programming point of
view, was later promoted as a general-purpose tool and, in fact,
became the ancestor of a large family of languages including
Modula-2 and Ada (see also bondage-and-discipline l
summed up by a devastating (and, in its deadpan way, screamingly
funny) 1981 paper by Brian Kernighan (of K&...