[R6RS] 3 things we may want to vote on
Anton van Straaten
Wed Jun 8 20:12:20 EDT 2005
Marc Feeley wrote:
> On 8-Jun-05, at 2:02 PM, Anton van Straaten wrote:
>> For the record, I agree with Will's position on this. That doesn't
>> actually change my vote, unless this change can be done with the
>> module system.
> Frankly I don't see how a module system would help in practice while
> still maintaining the advantages of removing set-car! and set-cdr! (for
> example better analysis of the rest parameter list, simpler
> implementation of some list primitives such as list?). If it is
> possible to get at set-car! and set-cdr!, you'd need a whole-program
> analysis to ensure that the list you care about is not being turned
> into a circular list, etc. But that same whole-program analysis could
> be applied to R5RS. I'm clearly missing something here...
I see the potential optimizations as only one aspect of this. I
consider merely being able to declare and/or enforce that pairs are
immutable, even without any optimization benefits, to be useful.
At the level of the spec, set-car! and set-cdr! could be provided as a
module (perhaps even an optional module). The optimization issue might
be addressed in an implementation by having a compiler switch like
"--enable-immutable-pairs" which tells the compiler that it's OK to do
the optimizations. It could then be an error to mix modules compiled
with different settings. That's beyond the domain of the spec, though.
This is not a proposal, I'm just explaining the kind of thing I was
thinking of. More generally, as I mentioned earlier, my feeling is that
making Scheme more functional in these sorts of ways would need to be
addressed in conjunction with other related issues - I don't see it as
something that can be dealt with one feature at a time.
More information about the R6RS