Examples of Effect of Readtable Case on the Lisp Reader (original) (raw)
ANSI Common Lisp 23 Reader
23.1 Reader Concepts
23.1.2 Effect of Readtable Case on the Lisp Reader
23.1.2.1 Examples of Effect of Readtable Case on the Lisp Reader
(defun test-readtable-case-reading ()
(let ((readtable (copy-readtable nil)))
(format t "READTABLE-CASE Input Symbol-name~
%-------------------------------- - ~
~%")
(dolist (readtable-case '(:upcase :downcase :preserve :invert))
(setf (readtable-case readtable) readtable-case)
(dolist (input '("ZEBRA" "Zebra" "zebra"))
(format t "&:A16TA24T~A"
(string-upcase readtable-case)
input
(symbol-name (read-from-string input)))))))
The output from (test-readtable-case-reading) should be as follows:
READTABLE-CASE Input Symbol-name
:UPCASE ZEBRA ZEBRA
:UPCASE Zebra ZEBRA
:UPCASE zebra ZEBRA
:DOWNCASE ZEBRA zebra
:DOWNCASE Zebra zebra
:DOWNCASE zebra zebra
:PRESERVE ZEBRA ZEBRA
:PRESERVE Zebra Zebra
:PRESERVE zebra zebra
:INVERT ZEBRA zebra
:INVERT Zebra Zebra
:INVERT zebra ZEBRA