MAKE-DISPATCH-MACRO-CHARACTER signals an error when the character is
already a dispatch macro character in the readtable. ISTM that this
isn't obviously conforming; at any rate, it's not very handy. Most
other implementations seem to clear the dispatch table [*], which I
think is the useful thing to do. Does anybody object to having M-D-M-C
(a) not error, and (b) clear the dispatch table, in case the character
is already a dispatching macro character?
[*] Quick check of the behavior of MAKE-DISPATCH-MACRO-CHARACTER:
(make-dispatch-macro-character #\#) ;Does this error?
(read-from-string "#*1") ;Does this read?
; If not, suppose that M-D-M-C
; cleared the dispatch table.
Errors Clears Implementation
------ ------ --------------
No Yes LispWorks, ECL, Clisp, ABCL
No No Allegro
Yes No SBCL
I did not test any other implementations.