[comp.lang.functional] Thunk -- the real scoop

jac@paul.rutgers.edu (Jonathan A. Chandross) (04/24/91)

There was a discussion of thunks a few weeks back on alt.folklore.computers.
Following is an excerpt from a posting by Joseph Newcomer on the real scoop
on thunks.

------------------- Begin Quote ----

Joseph M. Newcomer
Mon Apr  1 14:35:42 1991
jn11+@andrew.cmu.edu
Carnegie Mellon
Pittsburgh, PA

Here's a REAL piece of folklore (dammit, stop the Jargon bandwidth
debates; they may not consume much network bandwidth but they
consume MY bandwidth).  This is jargon-related.

Let me start with some recent history...

Back around 2.6, I sent a note to Eric saying that the definition of "thunks"
was not quite accurate.  He had included the explanation "...the sound of
the result hitting the stack" whereas I remembered it as "...the sound of
the result hitting the accumulator".  While he held that his two correspondents
were absolutely certain they were right, I was absolutely certain that
they were wrong.  Machines in 1960 didn't HAVE stacks; they
had software implementations of stacks, and no sane programmer would
have developed a result in the accumulator, pushed it onto the stack, and
then have to pop it off the stack back to the accumulator; this was too
expensive.  Besides, I pointed out that the sound of a result hitting a
stack is more like a "whoosh" than a "thunk".

The "stack" version remained, and I was certain this was wrong.  I called or
sent mail to several people trying to find their memory of the evolution
of this
term and to try to locate Peter Z. Ingerman.  Brian Randell claimed that he
found the name unacceptable, and in his book ("Algol-60 implementation")
they referred to the construct as "implicit subroutine".  Art Evans said
he thought the term came about because the result had "already been
thunk about".  Nobody else had any leads.  Gwen Bell at the Computer
Museum said that ACM probably had Peter's address as he had been an
editor of Computing Reviews until a few years ago.

This morning I called ACM headquarters, got Peter's address, and
directory assistance gave me his phone number.  I introduced myself and
told about both my interest in computer history and my desire to know
the etymology of the word "thunks".  He asked "do you /really/ want to
know?"  After being convinced I was serious, he gave the explanation. 
The following transcript is from my notes which I tried to make
reasonably complete.  I asked Peter for permission to post this to
a.f.c. and he granted it.  Any errors, mis-spellings of peoples' names,
or omissions are my fault.

"Ned Irons, Wally Feuerzeig, Kirk Sampley, Herb Tanner and myself (and I
think there were a couple of others, but I'm not sure) got together to
decide how Algol call-by-name worked.  We ended up in Princeton (where
Ned Irons worked) and we co-opted a classroom for our discussion.  We
tossed the thing back and forth and worked out the idea that we had to
do it differently if the parameter was a label, a variable, an
expression, an array, etc.   By the time we were done it was 2 in the
morning (you understand how it gets to be 2 in the morning...and that is
possibly the most significant part of this story) and it suddenly dawned
on us, more or less simultaneously, that all of the thinking about this
-- that it was an array, label, etc., -- could be done at compile time. 
This meant that all of the thinking was already done.  At 2 in the
morning the past tense of "think" is "thunk", and that's how the name
came about.

"Interestingly enough, Andrei Yershov [of the Soviet Academy of
Sciences, and, alas, the late Andrei Yershov now; one of the significant
pioneers of the field...-jmn] asked me this same question at a
conference in Warsaw a few years ago.  This was after he had introduced
the word "thunk" into the Russian language as "methoda sankov" [the
phonetic rendering; spelling is Peter's English transliteration...-jmn],
which translates as "the method of thunks"."

Of the responses I got, Art's was the correct one.

----------- End Quote ----



Jonathan A. Chandross
Internet: jac@paul.rutgers.edu
UUCP: rutgers!paul.rutgers.edu!jac