(missing)
(missing)
(missing)
(missing)
(missing)
(missing)
(missing)
Re: [Scheme-reports] [r6rs-discuss] redefining eqv? Peter Kourzanov (22 Dec 2010 20:32 UTC)
Re: [Scheme-reports] [r6rs-discuss] redefining eqv? Thomas Bushnell, BSG (22 Dec 2010 21:02 UTC)
Re: [Scheme-reports] [r6rs-discuss] redefining eqv? Eli Barzilay (22 Dec 2010 23:37 UTC)
(missing)
(missing)
(missing)
(missing)
Re: [Scheme-reports] [r6rs-discuss] Bigloo Peter Kourzanov (22 Dec 2010 20:35 UTC)
Re: [Scheme-reports] [r6rs-discuss] Bigloo Thomas Bushnell, BSG (22 Dec 2010 21:01 UTC)
Re: [Scheme-reports] [r6rs-discuss] returning back to pattern matching Thomas Bushnell, BSG (22 Dec 2010 21:55 UTC)
Re: [Scheme-reports] [r6rs-discuss] returning back to pattern matching Thomas Bushnell, BSG (23 Dec 2010 19:47 UTC)
Re: [Scheme-reports] [r6rs-discuss] returning back to pattern matching Thomas Bushnell, BSG (24 Dec 2010 00:53 UTC)

Re: [Scheme-reports] [r6rs-discuss] redefining eqv? Eli Barzilay 22 Dec 2010 23:36 UTC

Three hours ago, Peter Kourzanov wrote:
> On Wed, 2010-12-22 at 13:34 -0500, Eli Barzilay wrote:
> > > Yes: Bigloo, STklos, and Scheme 9 all have this problem.
> >
> > (I even have the first, but didn't try it...)  I still consider it
> > a plain bug, with the given the r[56]rs definition.
>
> Frankly speaking R*RS is very silent on this: I couldn't find any
> hard statement that eqv? should not be allowed to be redefined.

You're confusing (or mixing) a local binding (let ((eqv? ...)) ...)
with an implicit mutation (define eqv? ...).  The former is very
clearly a bug -- for example, in the case of `case' the description is
saying "in the sense of `eqv?'", so it doesn't matter how the form is
implemented, it should be following the r5rs text -- and that text is
certainly not something that should change with a local binding of
`eqv?'.  (I'd imagine some very explicit mention of this if this was
the intention.)

> Somehow enforcing this is a very un-Schemey thing to do... [...]

If you're talking about enforcing the same equality as `eqv?' whenever
"the sense of `eqv?'" is used (which, IIRC, appears many times)
despite of local names -- then I strongly disagree with it being
"un-Schemey".  Without that you get some insane language where nothing
is reliable.

> > So not only do I not see an argument for some missing
> > specification here, I see an argument for why the R5RS thing of
> > overwriting global bindings is an insane feature.
>
> That, I think, is a side effect of R*RS shifting focus from
> interpreter semantics (where override of a global binding has
> application-wide effects) to compiler semantics (where a snapshot of
> global bindings are made at the time when a module is compiled).

There are compilers that implement these so called "interpreter
semantics" and interactive repls that implement these "compiler
semantics", so I don't see any argument here.  In addition, there is
no "snapshot" that is needed -- a library/module/whatever is usually
defined as a lexical scope, not as a snapshot.

Three hours ago, Peter Kourzanov wrote:
> On Wed, 2010-12-22 at 15:15 -0500, John Cowan wrote:
>
> > The problem's a mess.
>
> Can we do anything about it in the interpreter besides
> special-casing a whole bunch of functions from the base library?

Yes.  See R6RS.

> And should we do anything about it? [...]

Depends on how "we" is defined.

--
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports