On Fri, Mar 2, 2018 at 1:05 PM, Robert Goldman <rpgold...@sift.net> wrote: > So as I see it we have three options for the *shared-readtable* > > Your original option -- the "initial-ish" readtable (since we can't control > when ASDF is loaded) Usually ASDF is loaded before any significant other software is. If the user insists in modifying the initial readtable early, he's probably on to something.
> My proposal: a copy of the standard readtable. We should consider what might > happen in this case if ASDF is reloaded or upgraded. I don't know if option > #1 has this same issue. In either case, definitely use defvar rather than defparameter, unless you're also going to clear-registered-systems at every update. > An unmodifiable standard readtable. I don't believe that this is portably > possible, is it? There's no ANSI method (unless I've overlooked something) > to make a readtable unmodifiable, and there's no way to access the standard > readtable portably (since it isn't required to be unique). > It's not portable for unmodifiability to be enforced, but it's certainly non-conformant to try to modify even when the implementations fails silently later rather than catches you immediately. So far as I know, only SBCL, ECL, Allegro, CMUCL make it unmodifiable. Maybe file bugs for other relevant implementations? > I believe my proposal, #2, is the most portable of all of the solutions, but > I am still open to correction. > For some definition of "portable". I know that some systems rely on e.g. CCL or MCL extensions #$ or #_ — but they could be made to use the *initial-readtable* that we definitely are going to save anyway. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org A good answer is one that solves the asker's problem, not one that (necessarily) fits his expectations. Actually, if the asker has been seriously looking for a solution, and did not find any, then there's a good deal of chance that a good answer won't fit his expectations! (At least, not all of them.)