5 ms·
Is Scheme Lisp?
- dragonquest 16y agoScheme most definitely is a Lisp. While it is clear enough that Scheme is moving in a direction that is totally different to Common Lisp (which no one doubts is a Lisp), McCarthy's original idea of Lisp, i.e. List Processing and use of symbols in programming still hold true for Scheme. Its basic data structure is still a cons cell and it uses S-exp. If Scheme is not a Lisp, then by stretching the argument one can even say Algol 68 (large like CL) is not Algol since its very different from Algol58/60 (much more minimal) or vice-versa. Besides the blurred line between what is the language's evolutionary state and what should be considered its family extension, for all practical (and I daresay otherwise also) Scheme is a Lisp.
- jimwise 16y agoI think the fact that we're now asking this question shows how successful the Scheme and Common Lisp efforts have been. Thirty years ago, there were dozens of variants of LISP out there, from the mainstream (MacLISP, InterLISP, Lisp Machine LISP) to the esoteric (it seems like every major CS department in the world had a local LISP dialect, much as many of them would soon have local Unix dialects). Many of these dialects had differences between them -- from the everything's-a-message architecture of Carl Hewitt's ACTORS (think smalltalk-meets-continuation-passing-style) to a number of LISPs with logic programming features. A number of dialects even played with Algol-like syntax (McCarthy himself had planned to give LISP an Algol-like syntax. S-Expressions were a fortuitous stopping point on the way to an implementation of so-called M-Expressions which never came). In the writings of the time, I don't see much debate over whether these systems were or were not LISP. Mostly, people understood this as a big family of languages. In contrast, Common LISP and Scheme not only have much more in common than those LISPs did, in one important regard (lexical scoping), they are closer to each other than they are to the vast majority of historical lisp implementations. The only reason we're asking this question is because after the fading away of other historical LISP dialects, the differences between Scheme and Common LISP seem bigger than they are. So yeah, I'd say Scheme is LISP. (By the way, two great looks at the LISP family tree are The Evolution of Lisp[1] by Guy L. Steele and Richard Gabriel, and Olin Shivers' History of T[2], an early dialect of Scheme with an extensible version of set! similar to Common Lisp's SETF) [1] http://www.dreamsongs.com/Files/HOPL2-Uncut.pdf http://www.dreamsongs.com/Files/HOPL2-Uncut.pdf [2] http://www.paulgraham.com/thist.html http://www.paulgraham.com/thist.html
- IvarTJ 16y agoI have chosen to look further into Scheme rather than Common Lisp, in part because it appears simpler, but also that Common Lisp is said to be directed by a standard that has stood still for many years and which doesn’t address many new issues faced by programmers. Scheme appears more nimble with many different implementations for different purposes. For historical reasons, I would call Scheme a Lisp, and I would not use the word Lisp as synonymous to Common Lisp. Common Lisp surfaced after Scheme, and Lisp was used of programming languages even before Scheme.
- muyuu 16y agoScheme moves very little, standards-wise. It's still mostly R5RS and R4RS, with R6RS being deemed a total failure. The standard of Scheme, if at all, is being set by major implementations. However, Scheme is designed so you make your own early in the learning process.
- edw 16y agoAsking a CL advocate whether Scheme is a Lisp is like asking a plantation owner whether his slaves are human beings. The page's second argument for why Scheme is not a Lisp ridiculous. Basically: CL is meant to be the Lisp, therefore Scheme should just go away. As an ardent, strident even, Schemer, it is my reasoned opinion that only a mentally disabled person would today design a LISP-2; the idea that function names occupy a namespace distinct from other objects makes less sense than Perl's syntax. CL and Scheme occupy, by design, I am comfortable saying, two distinct roles in the Lisp world: CL is the New Jersey Lisp whereas Scheme is the MIT Lisp. That said, there's a new New Jersey Lisp in town, and it wipes the floor with CL. It's called Clojure and it's a LISP-1 for kicking ass and taking names.
- bguthrie 16y agoThis analogy is too extreme. Slavery should not enter into a programming language debate unless you are actually discussing forced human bondage. Otherwise, I agree.
- edw 16y agoGeesh, It's not like I mentioned Hitler. My point, which we are not talking about, because we're currently dealing with your commission of the spurious-fallacy fallacy, is that when one asks questions of someone whose identity depends on an acceptance of the conditions that are the subject of one's questions, you're not likely to get answers that aren't grounded in an acceptance of those conditions.
- pstuart 16y agoWhat about java development?
- ohyes 16y ago"Asking a CL advocate whether Scheme is a Lisp is like asking a plantation owner whether his slaves are human beings." That is a horribly inept analogy. My guess is that most CL guys would say 'yes, it is.' "It is my reasoned opinion that only a mentally disabled person would today design a LISP-2." A brilliant and insightful analysis. Butter side up or butter side down? Clojure is nice, but so far I haven't found a way in which it 'wipes the floor' with CL.
- jbooth 16y agoI didn't even know this was a debate. I figured the overall list processing model (car/cdr and code as data), lack of for loops and ubiquity of recursion obviously made scheme a lisp. I suppose I haven't really written any common lisp though, so maybe I'm missing something.
- ohyes 16y agoThat would imply that common lisp is not a lisp, and scheme definitely is a lisp.
- enduser 16y agoCommon Lisp has multiple looping constructs, and tail recursion is NOT part of the Common Lisp spec. The functional programming of Scheme is a Scheme thing, not a Lisp thing.
- jbooth 16y agoThanks. I had always heard of scheme as a dialect of lisp so I figured the philosophy was consistent across both.
- muyuu 16y agoScheme is in fact the most orthodox, true to McCarthy's original intent, living LISP.
- ddlatham 16y agoIs Lisp a tool or a religion?
- silentbicycle 16y agoIt's a building material.
- kwantam 16y ago...it can't be both? :)
- busted 16y agoThis article actually introduced me to a useful phrase that doesn't seem to be used much according to my cursory Google search: "Tool worshipers" [though he misspelled it]. I think Tool Worship is an appropriately ridiculous phrase for when people become overly fanatical about supporting some language, operating system, text editor, screwdriver head etc. over others to the point of becoming derogatory toward those who hold different opinions.
- d0m 16y agoIt's confusing: Is the article saying that: 1. Scheme is not Common Lisp ? 2. Scheme is not Lisp ? 3. Scheme is not a Lisp ? For the #1, everyone understands that Common Lisp is a different programming language than Scheme. For the #3, it is clear that Scheme is a Lisp.. where Lisp, here, means the Lisp family. (Read, cons, car, macro system, etc etc) For the #2, this is where it can get a bit blurry as it depends of what we mean by Lisp. Do we mean all the dialect who decided to unit themselves in Common Lisp? If so, Scheme is not Lisp. Do we mean a lisp dialect? So, Scheme is Lisp. It's just confusing because of the word lisp who is being used in all possible ways. But, Scheme is a lisp and Scheme is not Common Lisp. Whether Scheme is Lisp, it depends of your meaning of Lisp.. So, unless you take the time to clearly define what you mean by lisp, it doesn't worth all the argumentation.
- RyanMcGreal 16y agoAs a ContentCreationWiki (ahem), it is saying all these things and more.
- silentbicycle 16y agoExactly the same argument is continuously happening about OOP, because the terms themselves are fuzzy and people argue past each other. I think "Scheme is a Lisp dialect" is clearer. "Does Scheme have enough Lisp-iness?" avoids the semantic trap of "is", but in doing so, shows how vague the question is.
- raganwald 16y agoI found the arguments lurched from "Scheme is a Lisp because _____" to "It would be nice if Scheme were abitrarily designated not a Lisp because _____" and possibly "It would be nice if Scheme did not exist because _____." This page needs some editing to put the arguments onto a common basis for comparison. There are three things being discussed, two of which are relevant to the title and one which is not. First, what test or tests define whether language X is a Lisp. Second, does Scheme pass these tests. Third, is it advantageous to "Lisp" the community or concept or whatever for Scheme to be considered a Lisp. The third question has nothing to do with whether Scheme is a Lisp as defined by the first two questions.
- egometry 16y agoA better question: is THE UNIVERSE lisp?
- asciilifeform 16y agoThe best argument I have seen in favor of Scheme being something other than a Lisp is by E. Naggum: "In the Algol family, the symbol table is a compiler construction. In the Lisp family, the symbol table is a run-time resource. In this sense, Scheme is a member of the Algol family and not a member of the Lisp family." (http://www.xach.com/naggum/articles/3225240324630811@naggum.net.html http://www.xach.com/naggum/articles/3225240324630811@naggum....)