IN-SYNTAXAs a result, applications which require extended syntax of some sort tend to globally modify the lisp readtable at compile and load time, sometimes interfering with other modules and/or user interaction.
Conscientious developers often avoid the creation of any stylized syntax because of its likely effect on parts of the environment which don't really belong to the application developer. This need for paranoia is probably contrived and the result of what amounts to an oversight in the design of Common Lisp.
COMPILE-FILE and LOAD bind *READTABLE* to its current value.
(IN-PACKAGE "FOO")
(EVAL-WHEN (EVAL LOAD COMPILE)
(SETQ *READTABLE* FOO:MY-READTABLE))
at the top of a file without globally side-effecting the environment.
Currently, there is no portable way to change the syntax only for the duration of a file, which in turn makes customized syntax difficult to use safely.
Programs that want to side effect the environment can instead continue to modify *READTABLE*.
This is enough of a foothold to implement a more elaborate facility for using readtables in a localized way.