All the Lisp guys who think of Paul Graham as some kind of hero should have a look at this 1997 (awarded in 2001) patent filing - he's apparently as unfamiliar with the concept of prior art as many of the folks over at Microsoft. From the claim:
A method for communicating between a client and a server through a limited communication interface, the method comprising: providing continuation functions associated with each of a plurality of links, wherein a continuation function includes a reference to a continuation argument representing a remaining sequence of instructions for subsequent execution; sending the plurality of links through the limited communication interface from the server to the client; sending a selected one of the plurality of links from the client to the server; and executing the continuation function associated with the selected link in the server including executing the remaining sequence of instructions.
Using the old Google thing, I found this Wikipedia page:
Almost all programming languages have means for manipulating the continuation of a computation step. Early imperative languages provided the so-called "goto" feature (in different guises, e.g. setjmp in C), which would force the computation to continue at some designated label. In the 1970s, people supplemented "goto" with additional control construct that encapsulated frequently repeated control patterns. Simple examples are function returns, loop exits, and loop iteration breaks. Complex examples include Simula 67's coroutines, Icon's generators, Prolog's backtracking mechanism, and threads.
Only a few programming languages provide full, unrestrained access to the continuation of a computation step. Scheme was the first full production system, providing first "catch" and then via Daniel P. Friedman call-with-current-continuation. Bruce Duba, an Indiana University trained Schemer who post-doced at Bell Labs, introduced them into SML of New Jersey. Some Smalltalk and Python implementations provide similar access to continuations, though nothing as systematic as Scheme.
So in 1997, Paul apparently jumped back in time and invented setjmp and goto. Awesome.
Technorati Tags:
patents, continuations