Printing of floating point numbers by the print function now follows the Common Lisp standard. This means floating point numbers always contain a decimal point and are generally printed with around 18 digits on a system with 64-bit double precision floating point numbers. This insures that printed numbers can be read back in to produce essentially identical values (slightly more digits would be needed to insure absolute equality).
This change may produce output that some find to unreadable. It would be good to be able to control the number of digits used for floating point printing. At present there is a back door mechanism: the variable *float-format* can be set to a C format string, which will then be used. The old printing approach is equivalent to setting this variable to "%g". I do not know how to implement such an option portably in Common Lisp and I am not sure how important it is, since all model summaries and things like print-matrix use format . If this turns out to be useful and important, I will change the mechanism to use a Common Lisp format string instead of a C one.
Several new print and read control variables are now used. These are
Two nonstandard variables are also used. If *print-symbol-package* is non- nil , all symbols are printed with package qualifiers. The variable *readtable-case* can be used to set the case of the readtable.
The readtable case should be part of the readtable; this will probably be changed to comply with Common Lisp .
The functions read , read-char , read-byte , and read-line now support eof-error-p arguments.
The reader now uses the keyword package as the default package while processing a features expression specified with the #+ or #- read macros. This means that #+fred and #+:fred are equivalent. The standard symbols in the *features* list have been changed to keyword symbols.
The format function has been changed to handle the ~ E , ~ F , and ~ G directives in accordance with the Common Lisp \ specification. A number of format directives have been added. The new format directives are
Very minimal implementations of the following functions have been added: