On Mon, Feb 3, 2014 at 7:44 PM, Taylan Ulrich Bayırlı/Kammer <
[email protected]> wrote:

> Marc Nieper-Wißkirchen <[email protected]> writes:
>
> > What is supposed to happen if in the running program a call into the
> > library performs (set! x 13)?
>

The result is unspecified.  It would probably be better
if we had specifically said so.  Note even mutation of
non-exported top-level bindings is unspecified in the
presence of multiple library loadings.

I think it is intended that accessing y
> > in the top-level program still yields 12 (at least this is, what
> > chibi-scheme does, with which I am experimenting), and which would
> > allow a number of optimizations at compile-time. [If I understand
> > correctly, it is only forbidden to mutate an imported binding, not an
> > exported one.]
>
> My answer is not authoritative, but I would say that you can safely
> assume the intention to be the sharing of the location, i.e. the change
> should be visible.


Unfortunately implementations differ here, and the
goal was that R7RS libraries be able to map directly
to native implementation libraries.

That being said, I have no idea why Chibi behaves the way you describe,
> maybe my assumption is not as safe as I thought.


This is an artifact of pre-R7RS semantics in Chibi.  It
can be configured at compile time such that there is
only one binding, and Marc's test program will print 12
then 13.  Probably I should make this the default
configuration (the "strict" keyword matching option
mentioned earlier actually forces this).

-- 
Alex
_______________________________________________
Scheme-reports mailing list
[email protected]
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to