[r6rs-discuss] [Formal] Formal semantics should not contain complicating optimizations

From: AndrevanTonder <andre>
Date: Fri Mar 16 11:12:44 2007

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 <andre_at_het.brown.edu> 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
>>
>>
>>
>
>
Received on Fri Mar 16 2007 - 11:12:01 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC