[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Worrying development

From: Dirk Herrmann
Subject: Re: Worrying development
Date: Fri, 23 Jan 2004 23:37:09 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030821

Tom Lord wrote:

   > From: Dirk Herrmann <address@hidden>

> First: It's not a matter of whether users *need* to make certain > assumptions: It's a matter of interface definition. Scheme defines the > string data type and together with it, it defines the semantics of > operations on it.
Please show me what existing lines of the Scheme standard will have to
change if mutation-sharing shared substrings are added.

The standard (not very formally but clearly enough) says that the
standard procedures which construct strings allocate fresh locations
for the contents of those strings.

That means that none of those procedures create mutation-sharing
shared substrings -- nobody has proposed anything different.

I think you are imagining that there is an additional requirement in
the standard: that any procedure at all which creates a new string
must allocate fresh locations for its contents.  But that additional
requirement isn't there.  Scheme programmers can not assume that that
requirement is part of Scheme.

As you say, the standard only describes functions that, on creation of strings, requires to allocate fresh locations for the contents of the strings. That is, someone who only uses the functions that are described by the standard is not able to create any mutation-sharing substring. And this, implicitly, indicates that different (in the sense of eq?) strings use different locations for their contents. To me this seems like a valid assumption. Standard-conforming scheme programs may IMO rely on this fact. However, I may be wrong in my interpretation of the standard, which is why I suggest the srfi approach (see below).

Mutation-sharing shared substrings are an upwards compatible extension
to the Scheme standard.  They break no correct programs.  They enable
new kinds of programs.

Introducing a separate data type for mutation-sharing character arrays also enables new kinds of programs. The difference between a separate data type and the former implementation is, that mutation-sharing substrings could be used everywhere where an ordinary string had been used before. That is, the difference is a matter of being able to re-use existing string-handling code rather than enabling new kinds of programs. However, it is exactly this re-using of existing string-handling code issue which becomes problematic when the semantics of the string objects change.

Marius, would it be an acceptable compromise to require that the mutation-sharing substring issue be submitted and discussed as an srfi before it becomes an official part of guile's core? The discussion of the topic in that forum would reduce the risk that the change introduces problems. I would then ask those who are interested to have it as a part of guile to submit a srfi proposal.

(Please note that, as I have said before, I have nothing against providing mutation-sharing substrings as a deprecated feature for some period - but not as an official part of guile's core.)

Best regards

reply via email to

[Prev in Thread] Current Thread [Next in Thread]