On Mon, Sep 7, 2020 at 2:18 AM Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
 
I don't think keeping ranges disjoint from any (potentially) mutable
types really ensures it. A statement like "ranges are immutable"
wouldn't be affected if the types were disjoint or not disjoint, I
think.

Ranges would be mutable if:

1) they might be the same type as some mutable type (in which case they could potentially, though not portably, be mutated using the procedures of that type), or

2) actual mutation procedures such as range-set! or range-map! were provided.

But since neither of these things are true, ranges are immutable (as I keep saying) by construction.  And indeed, the only place they are called immutable is in the abstract, which is non-normative.

(Again, frame-breaking operations like record and procedure inspection may allow direct mutation of a range.)



John Cowan          http://vrici.lojban.org/~cowan        xxxxxx@ccil.org
And now here I was, in a country where a right to say how the country should
be governed was restricted to six persons in each thousand of its population.
For the nine hundred and ninety-four to express dissatisfaction with the
regnant system and propose to change it, would have made the whole six
shudder as one man, it would have been so disloyal, so dishonorable, such
putrid black treason.  --Mark Twain's Connecticut Yankee