The other day I was griping to Xah Lee off-line about the refusal of the Emacs maintainers to add the CL package functionality to the core Elisp distribution. Lee pointed me at several threads on the emacs-devel mailing list that explained both sides of the controversy. Now Lee has summarized those threads for the benefit of anyone else who may be interested.
My own opinions are somewhere in between the two extremes. I have no particular desire to make Elisp into Common Lisp so I tend to think of the CL package as adding useful functions to Elisp rather than making Elisp into CL, which the package certainly doesn’t do. Some folks, like RMS, may find CL ugly and they’re entitled to that opinion but why should that be an excuse to exclude things like incf
, reduce
, and remove-if-not
useful functions that get implemented (for various values of implemented) by every Elisp user who makes the decision not to add
(require 'cl)
to their programs.
Other excuses, such as “it would make the Emacs manual too large” are non-starters. It would make the manual too large. Really? That’s your reason for not including the CL functions in core Elisp? Sorry but if you say stuff like that don’t expect people to take you seriously even if you are RMS.
Others have noted the plans to replace the Elisp engine with Guile (Scheme) but those plans actually call for using the Guile engine with its Elisp language layer not for replacing Elisp with Scheme so I don’t see how that fact enters the argument at all. You still need some sort of reduce
function when writing in Elisp whether the underlying engine is the traditional Emacs one or Guile.
Sadly, this question has devolved into a religious argument so we can expect no resolution in any time span meaningful to human beings. Still, it would be nice if we could just add those functions that almost everyone agrees are useful and not mention Common Lisp at all. Can’t we just pretend we found them lying on the side of the road?