Common Lisp: The Untold Story (2012)
nhplace.com
nhplace.com
My outsider’s perspective, at the time, was disappointment. I really liked InterLisp-D on my Xerox 1108 Lisp Machine. That said, Xerox provided a Common Lisp implementation that still had the UI wonderfulness and I think they still supported DWIM. I now have about 35 years of frequent Common Lisp use/experience, and my latest project/product is written in Common Lisp (http://kgcreator.com).
The emulator they built Open Genera was for the Alpha, and after Symbolics the defuncted ported to Linux 64bit: https://static.loomcom.com/genera/genera-install.html
What standardization of CL also has done is restrain the commercial lisp implementation vendors, since they compete against standard-compliant free implementations.
> Jokes were made about the frequent and extreme nature of the changes.
Struggling to agree on TeX vs LaTeX for collaborative projects, I ended up writing a few pages "begin.tex" that at least managed automatic theorem numbering and reference handling, and a few other basics, so we could live without LaTeX. This too was essentially instantaneous, and spread from collaborator to collaborator for a few years until machines got faster.
Speed matters: Look at the Vim / Neovim split. Some found the Vim delays acceptable, while others had a vision of the future that required far more sophisticated evolutions to not impose user delays. Vim was forced to catch up.
LISP people hated Common LISP circa 1990 for various reasons. Most users were still stuck on 16-bit micros on which LISP was tough to fit, and Common LISP didn't make it any easier.
LISP people look back at Common LISP with nostalgia now since it was so much better than Blub languages like Java, Python, Haskell, Go, Rust, ...
Perhaps those issues persisted and once they were gone the culture was embedded?
Is that the question?
Why not develop according to US standards?
> Was it a hedge against Lisp becoming hugely successful and helping their computer industries?
That was the plan? What went wrong?
It’s true that it’s not used too much in small programs, because small programs don’t need it. But in large systems, it’s invaluable.
scheme did it right
CLOS is much more complex than conditions.
> scheme did it right
Not at all.
Scheme was not providing any error handling in the language up to R5RS and had then zillions of different implementation specific extensions, many of them influenced by Common Lisp's condition system.
Compare:
https://www.gnu.org/software/mit-scheme/documentation/mit-sc...
https://docs.racket-lang.org/reference/exns.html
https://wiki.call-cc.org/man/4/Exceptions
https://www.scheme.com/tspl4/exceptions.html
For R7RS large they are still finding out what to do.
https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/Excep...
He was chair of the ANSI CL subcommittee for error handling.
> far the worst part of the standard
That's a very very rarely heard complaint.
Logical pathnames are very solid?
Let's also talk about the complex types and their operations. Their specification has a big internal inconsistency.
Oh, and read strictly, the subtype relationship is undecidable, which makes array element upgrading impossible to implement in a fully conforming way.
There are also all those places where the standard does not define what happens. Why are some operations required to signal errors in safe code when argument type constraints are violated, but not others? This lack of specificity is the opposite of "solid".
Types and subtypes were a very late decision and not in CLtL2 I believe.
Those lack of exact error descriptions is also in most other standards, and many are implementation defined. CL set the first standard there with its strict formalization even for the most mundane forms. Still very solid to me. I'm still fighting daily with the C standards which should know better by now.
Ok then.