It is where library bodies are said to expand to the equivalent of a letrec*
(in the expansion process section). Whatever else may happen in future
versions to the specification of libraries/toplevel-programs, I would hope that
their consistency with internal definitions be maintained in this regard. The
letrec* in question would be
(letrec* ((x (set! y 1))
(y y))
y)
This is illegal according to the specification of letrec*, which says
"One restriction on letrec* is very important: it must be possible to evaluate
each <init> without assigning or referring to the value the corresponding
<variable> or the <variable> of any of the bindings that follow it in
<bindings>. If this restriction is violated, an exception with condition type
&assertion is raised."
Andre
On Fri, 16 Mar 2007, Robby Findler wrote:
I went back and re-read the library section, but I can't find where
this is said to be illegal.
Can you explain yourself a little bit more, please?
Thanks,
Robby
On 3/16/07, AndrevanTonder <[EMAIL PROTECTED]> wrote:
A small issue: I have noticed that 10.9 addresses programs such as
(define x (set! y 1))
(define y 2)
This kind of thing is illegal in the current specification.
Andre
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss