Hacker News new | ask | show | jobs
by kazinator 2314 days ago
> Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman.

Note that at the time Scheme was invented:

1) It had lists terminated by the nil symbol, probably because

2) It was implemented as a sublanguage hosted in a Lisp system.

those kinds of things are not true of Scheme today.

Scheme may have been a Lisp when it was first conceived, but it's a different language now.

1 comments

None of the things I'm quoting there date from that epoch of Scheme, except possibly RPG's Lisp₁/Lisp₂ essay. The first Scheme compiler was Steele's RABBIT, published in 1978; though it compiled Scheme to MacLISP, it certainly had the freedom to represent lists as it saw fit. The first native-code Scheme compiler was probably Rees' T, in I think 1982, described by Paul Graham as "one of the best Lisp implementations" in http://www.paulgraham.com/thist.html while R7RS-small is from 2013.

Certainly Scheme is not the same language today as it was in 1976 (or 1986 or 1996), but no language in the Lisp family is the same now as then. SBCL or CLISP isn't going to be able to run unmodified SHRDLU or MACSYMA either.

(Note that Shivers, in the post Paul is quoting there, clearly considers the Scheme that Rees implemented in T to be "a Lisp" as well, just like Common Lisp, MacLISP, Franz Lisp, NIL, Emacs Lisp, Zetalisp, and InterLISP, all of which are mentioned.)

Erratum: Rees says the first Scheme compiler was Steele's CHEAPY in 1977, not RABBIT in 1978: http://mumble.net/~jar/tproject/
It is clear what "the language Sussman and Steele invented" refers to, and it is not RnRS for any n.

It's a clear historic reference.

Just like "the language MacCarthy and his team invented" isn't, say, Common Lisp.

As demonstrated above, Sussman's involvement in steering the Scheme language design continues to the present day, while Steele's involvement continued until at least R⁵RS (published in 1998), so I don't think there's any reason to think that the ANSI Common Lisp standard (published in 1994) is referring specifically to the first versions of Scheme in 1976 — particularly given that it was written by Pitman, signatory to R³RS, R⁴RS, and R⁵RS, which say (by way of explaining their subject matter) "Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language". Moreover, certainly Pitman isn't referring to old versions of Scheme when he's talking about => in his article about different Lisp camps.
> I don't think there's any reason to think that the ANSI Common Lisp standard (published in 1994) is referring specifically to the first versions of Scheme in 1976.

Direct quote from 1.1.2 History: "One of the most important developments in Lisp occurred during the second half of the 1970's: Scheme."

That's a quote from my post above. Where is the evidence that someone who wrote this thinks that Scheme at some point stopped being a Lisp? You'd think they would have mentioned this if they thought that early versions of Scheme were Lisps while later versions, despite filling Lisp conferences with papers about Scheme at the time, were no longer Lisps.

What's this about conferences, you say? Well, the current page for the European Lisp Symposium https://www.european-lisp-symposium.org/ says:

> The purpose of the European Lisp Symposium is to provide a forum for the discussion and dissemination of all aspects of design, implementation and application of any of the Lisp and Lisp-inspired dialects, including Common Lisp, Scheme, Emacs Lisp, AutoLisp, ISLISP, Dylan, Clojure, ACL2, ECMAScript, Racket, SKILL, Hop and so on. We encourage everyone interested in Lisp to participate.

By 1982, what had in 1980 been the Lisp Conference had been renamed to "Lisp and Functional Programming" (under the auspices of the ACM), so it's hard to draw strong conclusions from, say, the publication of Rees's T paper there about whether Scheme is or is not "a Lisp". But since 2007 it's been the "International Lisp Conference".

The 2007 invitation https://www.international-lisp-conference.org/2007/announce/... refers to "the Lisp and Scheme communities". In 2007 Sperber published "Lessons from the R⁶RS process" there. There were Dylan papers that year as well. Herbert Stoyan gave a talk "Lisp: themes and history", which I haven't found a transcript of, but you can get an idea of what Herbert Stoyan thinks Lisp history consists of at https://web.archive.org/web/20061029131811/http://www8.infor..., which includes Dybvig's Scheme book, the Scheme84 manual, and "RRS". (That bibliography ends in 1988.) An audio of the talk is at https://www.international-lisp-conference.org/2007/audio/Her... but I have not listened to all of it.

In 2008 the LISP50 book (also published by the ACM) included a paper by Clinger entitled "Scheme@33".

At ILC 2010 (the conference doesn't happen every year) Christian Queinnec (who wrote Lisp in Small Pieces, a book largely about Scheme, although Queinnec frequently uses the word "Lisp" in a sense that excludes Scheme) gave a paper "Teaching CS to undergraduates at UPMC", about teaching using Scheme.

In 2014 the International Lisp Conference ("The International Lisp Conference is a forum for the discussion of Lisp and, in particular, the design, implementation and application of any of the Lisp dialects. We encourage everyone interested in Lisp to participate." — no mention of a separate "Scheme community" — http://ilc2014.iro.umontreal.ca/ ) was chaired by Marc Feeley, who's best known for Scheme implementations like PICOBIT, and who's recently been working on JS. (There was a paper that year on hygienic macros for JS.) There was a paper about Racket and a paper about an anesthesia system (!) written in Scheme.

Well, the author of that doesn't mention anything about important developments in Lisp coming from Scheme in the first half of the 1980's, second half of the 1980's and so on. It seems to imply that the important contributions to Lisp from Scheme took place in the late 1970's, and then it dried up (as far as contributions relevant to Lisp).

Furthermore, none of the Scheme-influenced features in CL are from anything but he late 1970's Scheme. The lexical scoping is pretty much, pun intended, the extent of it.

Furthermore, the wording later in the paragraph is in the past tense: "The major contributions of Scheme were, ...".

That's it; Scheme was done contributing to Lisp by the end of the late 1970's. We took some of the good bits, thank you very much!

> You'd think they would have mentioned this if they thought that early versions of Scheme were Lisps while later versions.

Stated explicitly in such terms, it would kind of be an inappropriate rant with respect to the topic of that section, and in the context of the whole document. (That sort of extended section on history is not that common in ANSI and ISO language standards to begin with.)

You'd also think, by the same token, that if they thought Scheme continued to evolve as a Lisp, rather than something else, that they would crib newer features from Scheme. Like for instance, making the empty list a Boolean true value, and introducing a dedicated false constant.