On Fri, 16 Feb 2018 10:01:36 +0000 Tim Bradshaw <tfb(a)tfeb.org> wrote:
Tim Bradshaw writes:
On 16 Feb 2018, at 02:09, Bakul Shah <bakul(a)bitblocks.com> wrote:
=20
Scheme's lexical scope and block structure came from Algol.
The rest from Lisp. The joke was that the shortest and longest
language specs were of lisp dialects. The C++ spec may be
longer now.
I don't think this is true in any meaningful sense. There are famous
plays on words which relate Scheme to Algol (The Scheme specifications
are 'revised^n reports on the algorithmic language scheme', and I think
Scheme was the first standard language, anywhere, which took lexical
scope seriously: in particular it was the first standard language with
first-class continuations. (I'm saying 'standard language' because
I'm
sure there were research prototype implementations.).
On the second page of Sussman & Steele's "Scheme, an
Interpreter for Extended Lambda Calculus", AI Memo 349, it
says "The solution, which Hewitt also uses, is to adopt an
ALGOLesque block syntax". And it goes on to describe lexical
scoping. They even call it BLOCK! Algol is mentioned a number
of times. The discovery of correspondence between actor
semantics and lambda calculus was a happy coincidence. From
wikipedia article on the history of Scheme:
25 years later, in 1998, Sussman and Steele reflected that
the minimalism of Scheme was not a conscious design goal,
but rather the unintended outcome of the design process. "We
were actually trying to build something complicated and
discovered, serendipitously, that we had accidentally
designed something that met all our goals but was much
simpler than we had intended... we realized that the lambda
calculus, a small, simple formalism, could serve as the core
of a powerful and expressive programming language."
Now you may quibble about "came from" but I think the debt is
to Algol or at least Algol related papers. Even the connection
to lambda calculus is via Algol (Peter Landin's papers on
mechanical evaluation expressions (1964) and formal
description of Algol60 (1965)).