02.03.2018, 21:05, "Robert Goldman" <rpgold...@sift.net>:
>> You might be interested to know that ACL binds *readtable* on startup >> to an unmodifieble readtable >> (which is a violation of CLHS http://clhs.lisp.se/Body/02_aac.htm : >> "The initial readtable is distinct from the standard readtable. It is >> permissible for a conforming program to modify the initial >> readtable.") > > I don't see this behavior in ACL 10.1 (64 bit) on the Mac: > > > CL-USER> *readtable* > #<readtable @ #x100022d3a2> > CL-USER> (defun semicolon-reader (stream char) > (declare (ignore char)) > ;; First swallow the rest of the current input line. > ;; End-of-file is acceptable for terminating the comment. > (do () ((char= (read-char stream nil #\Newline t) #\Newline))) > ;; Return zero values. > (values)) > SEMICOLON-READER > CL-USER> (set-macro-character #\; #'semicolon-reader) > T > CL-USER> Turns out this only happens when your code is evaluated via the -ee parameter with -batch parameter preset: ~/lisps/acl100/alisp -batch -ee "(set-dispatch-macro-character #\# #\u #'(lambda (&rest ignored)))" An unhandled error occurred during initialization: An error occurred (Attempt to set dispatch macro in system readtable #<readtable @ #x2012072a>; copy readtable first.) during the reading or evaluation of -e "(set-dispatch-macro-character #\\# #\\u #'(lambda (&rest ignored)))"