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
************************************************************************
From: Lou Steinberg
Subject: Re: *readtable* and read macros
Date: 
Message-ID: <Oct.18.15.14.17.1988.25594@bearcat.rutgers.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