
But Interlisp-10 had generators back in 1973, if I'm reading the manual at Trailing Edge correctly.
As the following document explains, generators were common to all new-generation AI languages that appeared in early 1970 (such as SAIL, CONNIVER, POPLER, INTERLISP amd QLISP): http://www.bitsavers.org/pdf/xerox/parc/techReports/CSL-73-2_New_Programming... It seems IPL-V from mid-1960s has been the inspiration. There is quite a bit of difference between the above paper, for example, and Shaw et al paper. In AI languages, generators are introduced by pure hacking. The run-time environment lets the program access and arbitrarily modify the components of the frame structure. One can mess with the return pointers as well with bound variables (or anything else for that matter). On the other hand, Shaw et al had distilled iteration to an abstract interface. Moreover, they have introduced reasoning principles, in the form of Hoare logic assertions and proof rules. To me, that is the modern thinking to aspire to. Jerzy Karczmarczuk wrote:
Griswold didn't introduce the co-expressions (this is their terminology, not "generators") out of the air, they have been present as the "unevaluated expressions" in Snobol4. Icon has been built upon the Snobol4 philosophy, although as language it was very different.
I do mention that Icon took a lot from SL5 (and SL5 took a lot from Snobol4). One can find more information elsewhere: http://lambda-the-ultimate.org/node/1780#comment-21647 I read somewhere Griswold's saying that Icon was meant as a clean cut from SL5 (although he was going to SL5 from time to time to steal features from). The SL5 paper `Ralph E. Griswold and David R. Hanson, An Overview of SL5' convinced me that SL5 was the real place for innovation in control. It seems Alphard, Icon and CLU stand out as the languages that are explicitly designed around generators as the fundamental form of control.