Fun Computing Term: Thunk
Yesterday evening, when pouring through the massive amount of text that is the computing world, I encountered a very fun computing term which is none other than the word “thunk”. Now, after some un-careful research, I have determined that thunk has several, context-dependent meanings. Two of these yield some potentially unique opportunities for daily usage.
First, in those functional languages which are lazily evaluated (Haskell and friends), a thunk is a delayed computation. That is to say that a infinite list (which is actually possible in lazily evaluated languages) is, except for those bits which were used and therefore computed, full of thunk. Similarly, a task or event which has not been completed due to explicitly and artificially induced delays may also be termed a thunk. One might say “This afternoon is designated for finishing tasks and tying up loose ends as my to do lists are full of thunk(s)”. With this in mind, I propose some new, more creative uses of the term. For example, “Let’s thunk X because task Y is more important right now”. Maybe even, “Thunk that, let’s play StarCraft instead!”.
The second usage of the term is more domain-specific than the first. The original usage seems to have originated when IBM and Microsoft determined the way to move between a 16-bit and a 32-bit environment as a way to keep support for older software on then-new windows systems. It would seem that every time an instruction or address reference needed to be translated from 16->32 or 32->16, it was called a thunk. Therefore, to map something from one space to another, may be called “thunking”. This may even be equivalent to something like a mathematical function or a functor in category theory such that a function, f, defines a mapping from A to B, f:A->B. If this is the case, it may even be said that the very usage of thunk outside of it’s original context may be considered a thunked usage of the term!
Happy thunking!

















