[Haskell-cafe] Lazy lists vs generators

oleg at okmij.org oleg at okmij.org
Wed Jun 15 10:28:34 CEST 2011


> 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_Languages_For_AI_Research.pdf

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.



More information about the Haskell-Cafe mailing list