Subject: bug#15171: 24.3.50; (cl) `Common Lisp Compatibility' is incomplete

From: Drew Adams <[email-masked]>
Date: Fri, 23 Aug 2013 13:19:35 -0700 (PDT)

This appendix is only a brief summary, it seems, and can be quite
misleading.  I'm skeptical that it specifies "a list of all known
incompatibilities" between the Emacs cl* libraries and Common Lisp.

But it is correct that it _should_ specify them all.

For one thing, the handling of formal parameters that correspond to
special variables is an unmentioned incompatibility.  State that
you must use an explicit `let' inside the function to get the same
effect.

Likewise, the difference in syntax for characters, various other data
type differences, and the absence of read macros.  Not to mention CLOS.

The main message for this appendix should not be that the few things
that it mentions are the only incompatibilities, but rather that even
with cl* Emacs Lisp is quite different from Common Lisp.  IOW, it
gives exactly the wrong message, suggesting that the two are almost
the same.

This appendix should at least mention:

1. All important or large Common Lisp features that are lacking.

2. All important differences in behavior for features that might
seem at first sight to be the same or similar.

An additional detail - this text is backwards:

"The multiple-value return facility treats lists as multiple values,
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
since Emacs Lisp cannot support multiple return values directly."

It should say that because Elisp cannot support... it treats multiple
values as lists.

And "treats" is even too generous.  It should just say that Emacs
Lisp does not support binding or returning multiple values; instead,
it uses lists of values.

In GNU Emacs 24.3.50.1 (i686-pc-mingw32)
 of 2013-08-17 on ODIEONE
Bzr revision: 113938 [email-masked]
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/binary --enable-checking=yes,glyphs
 CFLAGS=-O0 -g3 LDFLAGS=-Lc:/Devel/emacs/lib
 CPPFLAGS=-Ic:/Devel/emacs/include'