From: ······@uicslsv.cs.uiuc.edu
Subject: *readtable* and read macros
Date:
Message-ID: <4400005@uicslsv>
I'm using a read macro with set-macro-character as in
(set-macro-character #\? #'create-variable)
After reading the data file I want to restore the original readtable,
and the following should work (if I'm understanding Steele correctly).
(setq *readtable* (copy-readtable nil)) -------1
But this doesn't and I make do with the foll. code.
(defvar *temp-readtable* (copy-readtable))
(load "read-macros.lisp") etc....
(setq *readtable* (copy-readtable *temp-readtable*)) ------2
This is quite kludgy.
Is this the only way to do it, or should (1) work (i.e. is the LISP on
the TI explorer buggy)?
-Bharat
************************************************************************
R.Bharat Rao
············@uxc.cso.uiuc.edu , ······@uicsl.csl.uiuc.edu
************************************************************************
In article <·······@uicslsv> ······@uicslsv.cs.uiuc.edu writes:
> After reading the data file I want to restore the original readtable,
> and the following should work (if I'm understanding Steele correctly).
>
> (setq *readtable* (copy-readtable nil)) -------1
>
> But this doesn't [work]
To quote Steele (p. 361)
(setq *readtable* (copy-readtable nil))
will restore the input syntax to standard Common Lisp syntax
But do make sure it *really* isn't working before claiming a bug - I
would assume this sort of thing gets tested by major Lisp suppliers.
If it really doesn't work, I'd do
(let ((*read-table* (copy-readtable))) ; rebind to copy of current one
(load "read-macro-file.lisp")
(load "data-file")
)
On exit from the let, the original binding is restored.
--
Lou Steinberg
uucp: {pretty much any major site}!rutgers!aramis.rutgers.edu!lou
arpa: ···@aramis.rutgers.edu