9

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.

5
  • 2
    Possibly the answer is closely related to "when was lexical scoping introduced to LISP?" - I note that the initial Scheme paper doesn't have it ... (probably because it doesn't need it as LAMBDA suffices).
    – davidbak
    Commented Sep 20, 2022 at 20:10
  • Maclisp used lambda or prog 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.
    – texdr.aft
    Commented Sep 20, 2022 at 22:13
  • 1
    @texdr.aft - I can confirm that my Chine Nual (March 1981, 3rd ed) has let and let*.
    – davidbak
    Commented Sep 20, 2022 at 23:44
  • 1
    And here they are defined in the first edition LISP Machine Manual (Jan 1979).
    – davidbak
    Commented Sep 20, 2022 at 23:49
  • 2
    @davidbak would you care to turn that into an answer? Commented Sep 21, 2022 at 5:30

1 Answer 1

9

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:

enter image description here

(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.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .