Email list hosting service & mailing list manager

istring? Marc Nieper-Wißkirchen (15 Jul 2016 12:36 UTC)
Re: istring? Per Bothner (15 Jul 2016 14:25 UTC)
Re: istring? John Cowan (15 Jul 2016 15:53 UTC)
Re: istring? John Cowan (15 Jul 2016 14:59 UTC)
Re: istring? Per Bothner (15 Jul 2016 15:47 UTC)
Re: istring? John Cowan (15 Jul 2016 16:18 UTC)
Re: istring? Marc Nieper-Wißkirchen (16 Jul 2016 13:19 UTC)
Re: istring? John Cowan (16 Jul 2016 15:14 UTC)

Re: istring? Per Bothner 15 Jul 2016 15:47 UTC


On 07/15/2016 07:59 AM, John Cowan wrote:
> Marc Nieper-Wißkirchen scripsit:
>
>> As an analogue, consider `#(1 2)' and `(vector 1 2)'. The literal is
>> immutable, the vector returned by the procedure application is
>> mutable. However, there is no predicate distinguishing between the
>> two cases.
>
> That's because implementations are not required to make a distinction
> between the two, and some do not.  Chicken and Chibi, for example, have
> only mutable versions of either strings or vectors.  *Users* must make
> the distinction in portable code, but that's a different matter.

I don't think any implementation that allows over-writing literals is a good
candidate for "Scheme-large".  I know Fortran allowed it in the 50s,
but that has not been considered kosher since then.

> As far as I can tell, implementations like Chibi, where the internal
> representation is UTF-8 and no mutable/immutable distinction is
> made, can't implement SRFI 140 without changing that, because SRFI
> 140 guarantees that string operations on literal strings are O(1).
> That seems to me to be a high barrier to the adoption of SRFI 140,

So is the goal for WG2 to only add features that can be implemented
as pure-library additions?  If so, why is SRFI-124 (ephemerons) even
in contention?

> and the chief reason why SRFI 140 is not just a blanket rename of
> SRFI 135.

Of course.  The point of SRFI-140 is to evolve the Scheme language's
handling of strings in a way that that is coherent and breaks as little
code as possible.  (My proposal is that no code that uses strict R7RS libraries
will be broken; only possibly code that uses an informal "default" library.)

SRFI-135's goal is to be implementable as a pure-library that can be imported
on existing implementations.  SRFI-140 may require more fundamental changes.
However, it is not something that is difficult to implement - unlike ephemerons.
--
	--Per Bothner
xxxxxx@bothner.com   http://per.bothner.com/