On Sep 9, John Cowan wrote:
> Eli Barzilay scripsit:
>
> > Why does it need to? The only thing that it needs to do is make
> > sure that invocations of a reader module to read some file are
> > separate from runtime invocations, and the lack of such separation
> > is exactly what makes `eval-when' so bad. (Actually, together
> > with a large number of ad-hoc rules on when and how stuff gets
> > evaluated in CL, see http://fare.livejournal.com/146698.html)
>
> So let me understand this. At compile time, the reader looks for
> the modified readtable and associated reader-extension procedures in
> a known file, independently of any such procedures available in the
> source being compiled?
Yes. It's basically doing something like
(dynamic-require '<reader> read)
to get a function that reads the code.
> And, consequently, at run time the reader looks etc., independently
> of any such procedures that exist in the currently running program or
> interaction loop?
If you're talking about using `read' and running into input that has
`#lang', then this will do the same as the above -- and this will be a
new instance of the reader module. (Which makes sense when you want
code to run the same whether you precompile it or not.)
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss