|
Common Lisp _IS_ the consolidation of various Lisp dialects that you've asked about. Back in the 70s and 80s there are numerous Lisp dialects (way, _way_ more then there are today, since each dialects has their own sub-dialect and so forth), and so Common Lisp was created back in the 80s (the work started in 1981 and finished in 1994) to unified various Lisp dialects into one common language. And Common Lisp accomplishes that objective, well mostly anyway. Soon(-ish) most people, companies, and institutions ported their Lisp code base to Common Lisp, and by the late 80's and early 90's, when you say Lisp most people will (correctly) assume that you mean Common Lisp, not MacLisp or InterLisp, or some earlier, long depreciated dialects. You can read more about the nitty gritty details in the Evolution of Lisp essay by Richard Gabriel here: http://www.dreamsongs.com/Essays.html Now, about Scheme. Remember when I said that Common Lisp _mostly_ accomplishes its objective of unifying various Lisp dialects? Yeah, basically the Scheme community didn't like how Common Lisp turns out, so they decided to stick with Scheme. And it is understandable why they feel this way, because despite outward appearance, the two languages are very different, with Scheme focuses on small (and mathematically elegant) core language, while Common Lisp, with its focus on being practical, is a huge language with a standard library that includes everything and a kitchen sink. Scheme also has a totally different evaluation model compared to Common Lisp and its own macro system with emphasis on hygienic. Not to mention that Scheme has its own standard, the R*RS (now in its 6th revision, with 7th in the drafting process). Now, the thing about Common Lisp is that it is very hard, if not downright impossible, to change its standard. This means that it is not easy to make a substantial changes to the language and has the wider community adopt it (and we haven't even talk about changes that will break backward compatibility here). This is one of the reason that Rich Hickey created Clojure as an entirely new Lisp dialect (before this, he had implemented a Java FFI for Common Lisp). Clojure has a new syntax that is far more consistent than Common Lisp (which comes at the cost of breaking backward compatibility), as well as many new and experimental features, such as immutability, asynchronous operations, and the focus on functional programming style. All of these would be very hard to introduce into Common Lisp without significant efforts and time. |
I don't think it's really fair to say modern Schemes aren't focused on being practical. Nor that they're small.
Take a look at Chicken or Racket, and you'll see that they have quite substantial libraries and many features above and beyond the specs that make them much more practical than the core Scheme spec alone.
Quite beside that, there's also the new R7RS[1] spec's "large" language is just that: large. It's also focused on being practical. So I wouldn't say that the traditional Scheme vs CL divisions in terms of size and practicality still hold.
I would say that Scheme is more elegant than CL, and more modern, and less crufty. Unfortunately, there are still far more programmers using CL than Scheme. Hopefully with Emacs' move to Guile that will change.
That said, I still love CL, and would far rather use it than any other language, except Scheme.
[1] - http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7r...