[swift-evolution] [Pitch] Change the endIndex value for closed Ranges and Collections

Dave Abrahams dabrahams at apple.com
Thu Mar 24 16:24:32 CDT 2016


on Wed Mar 23 2016, Howard Lovatt <swift-evolution at swift.org> wrote:

> +1 I think it is a good idea to make a collection run from firstIndex to
> lastIndex inclusively (note name change to match firstElement and
> lastElement). For an empty collection both firstIndex and lastIndex would
> be invalid values that would cause both c[c.firstIndex] and c.[c,lastIndex]
> to fail.

That direction is pretty much a nonstarter with me.  There are *many*
algorithms that are correct for empty collections without any
special-case testing, as long as you use half-open ranges.  There's no
reason to make every algorithm that uses indices test for emptiness
before proceeding.

See also
https://www.quora.com/Why-are-Python-ranges-half-open-exclusive-instead-of-closed-inclusive
for philosophical background on why most ranges should be half-open.

-- 
Dave



More information about the swift-evolution mailing list