[r6rs-discuss] set-car!

Anton van Straaten anton at appsolutions.com
Sat Jun 23 12:54:43 EDT 2007


William D Clinger wrote:
> Anton van Straaten wrote:
> 
>>Was there ever "a standard way to redefine standard procedures"?
> 
> 
> Unequivocally yes.
...
> For example, you can redefine set-car! and set-cdr!
> without changing the behavior of any system procedures
> that might happen to use them.  

In what sense, then, is this "a standard way to redefine standard 
procedures"?

If the quoted claim is interpreted as merely an indirect way of saying 
that R5RS allows any top-level variable to be mutated, then it's clearly 
true and uncontroversial.

However, when it comes to redefining standard procedures, R5RS section 6 
first specifies that defining or mutating top-level variables does *not* 
redefine standard procedures as far as other standard procedures are 
concerned, and then subsequently strongly suggests that those procedures 
might in fact be affected by assignment under certain conditions -- 
otherwise, why be so specific about what might be affected by the 
threatened "unspecified effect"?

This is clearly "allowing the possibility of several different 
meanings", i.e. a dictionary definition of equivocal, when it comes to 
the meaning of mutating certain top-level variables.

However, I should make it clear that I meant the word "equivocate" in 
the sense of "to avoid commitment", and did not intend to imply any 
intent to deceive or misguide.

> Another difference is that the IEEE standard says that
> "conforming programs shall not" assign to top-level
> variables until they have been defined, presumably to
> prevent Anton from trying to read the last sentence of
> the second paragraph as equivocation.

Since Alan was discussing R5RS, so was I.  The IEEE version is indeed 
narrower, and I appreciate your pointing that out.

> That is a fundamental aspect of R5RS Scheme.  One would
>  hope the editors understand the magnitude of the changes
> they have introduced in the draft R6RS.

Oh wait, you mean *any* top-level variable was mutable under R5RS? 
Uh-oh...  WHAT HAVE I DONE?!

Anton




More information about the r6rs-discuss mailing list