[r6rs-discuss] libraries are parameters (was set-car!)

From: AndrevanTonder <andre>
Date: Wed, 27 Jun 2007 14:29:10 -0400 (EDT)

On Wed, 27 Jun 2007, Lynn Winebarger wrote:

> On 6/27/07, AndrevanTonder <andre at het.brown.edu> wrote:
>>
>> On Wed, 27 Jun 2007, Lynn Winebarger wrote:
>>
>> > The draft may not require an implementation compile libraries
>> > separately, but it does appear that whatever the semantics are,
>> compiling
>> > separately or together must be equivalent.
>>
>> For portable libraries, I believe that is the intention, but note that
>> the draft explicitly allows compiling separately or together to be
>> /inequivalent/ when expand-time state is involved,
>
>
> Can you point to where this statement is made?

In 7.2 (emphasis mine):

   An implementation *may* distinguish instances/visits of a library for
   different phases or to use an instance/visit at any phase as an
   instance/visit at any other phase. An implementation *may* further start each
   expansion of a library form by removing visits of
   libraries in any phase and/or instances of libraries in phases above 0.

   ...thus, a library is portable only when it references identifiers in phases
   consistent with the declared levels, and
   a library whose meaning depends on whether the instances of a library are
   distinguished or shared across phases or library
   expansions may be unportable.

>> If you don't like that, consider the following:
>>
>> Libraries or programs that use runtime state are not portable.
>>
>> This is because, as for compilation, the draft allows a program or library
>> to
>> use the values of bindings left over from yesterday's, or last year's,
>> instantiations, without requiring reinitialization.
>>
>> Where can I find the statement you indented in the draft?

That was my own statement. It is implied by the following in 7.2:

   ... a library whose meaning depends on whether the instances of a library are
   distinguished or shared across phases or library
   expansions may be unportable.

In other words, the behaviour of the program

   (import (foo))
   (display foo-x)

in a fresh instance of the runtime system may be different from its behaviour
in a system where (foo) has previously been instantiated during the compilation
of some other library.

> Is there
> a section giving conditions that guarantee portability of code, rather than
> intermittently declaring when it isn't?

The note at the end of 7.2 has a very limited guarantee.

Andre
Received on Wed Jun 27 2007 - 14:29:10 UTC

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