Similar to When was DEFUN added to Lisp? when was let
introduced? It seems like a fundamental feature but unless I missed something even maclisp didn't contain it.
1 Answer
You'd think (ok, I thought) it was introduced with Scheme. But the initial Scheme paper doesn't have it. Probably because it doesn't need it as LAMBDA
suffices. (In fact, as we know due to G.L.Steele Jr., LAMBDA
suffices for everything!!)
(In a comment above, @texdr.aft points to:) The paper Evolution of Lisp (Steele, Jr., Gabriel, 1993), a fairly definitive exposition of LISP history by a pair of researchers who were involved in creating it, claims LET
came from Lisp Machine Lisp:
but LET—itself a macro first invented and reinvented locally at each site—was a late-comer to the MacLisp world; according to Lisp Archive, it was retroactively absorbed into PDP-10 MacLisp from Lisp-Machine Lisp in 1979 at the same time as DEFMACRO and the complex Lisp Machine DEFUN argument syntax.
So let's go to the source - here is the 1st edition of the Chine Nual - the Lisp Machine Lisp manual - and we see here the definition of LET
- 1979-JAN:
(For which it is explained that of course it is a macro that expands into a lambda.)
(By the time of the 3rd ed, 1981-MAR, they had already added LET*
, as seen in my copy of the red Chine Nual.)
LAMBDA
suffices).lambda
orprog
for binding variables;prog
was more common. (Source: empirical observations of Maclisp code—can't write much right now.) I don't know the answer to the question, though. It's something I've wondered myself. Steele and Gabriel's "Evolution of Lisp" says it was invented in Lisp Machine Lisp.let
andlet*
.