[swift-evolution] [Review] SE-0065 A New Model for Collections and Indices

Thorsten Seitz tseitz42 at icloud.com
Tue Apr 19 03:01:53 CDT 2016



> Am 18.04.2016 um 23:54 schrieb Dave Abrahams via swift-evolution <swift-evolution at swift.org>:
> 
> 
> on Sat Apr 16 2016, Thorsten Seitz <swift-evolution at swift.org> wrote:
> 
>>> Am 15.04.2016 um 23:19 schrieb Dmitri Gribenko via swift-evolution <swift-evolution at swift.org>:
>>> 
>>>> On Fri, Apr 15, 2016 at 1:30 PM, Stephan Tolksdorf <st at quanttec.com> wrote:
>>>>> On 2016-04-12 Dmitri Gribenko via swift-evolution wrote:
>> 
>>>>> Not even to mention that
>>>>> indices are valid only in context of a particular collection instance,
>>>>> so in this model you could validate an index against one collection
>>>>> and use it with another one.
>>>> 
>>>> 
>>>> The proposal requires Index values to be Comparable. Does that mean that
>>>> indices from different collection instances should be comparable i.e. have a
>>>> strict total order?
>>> 
>>> No, comparing indices from unrelated instances produces unspecified
>>> results (incl. traps).
>> 
>> Path dependent types as used in Scala would allow making this
>> distinction type safe (see
>> http://docs.scala-lang.org/tutorials/tour/inner-classes or
>> http://danielwestheide.com/blog/2013/02/13/the-neophytes-guide-to-scala-part-13-path-dependent-types.html)
>> by allowing the index type to be rooted at the instance.
> 
> Wouldn't that also rule out useful designs, as in those where indices
> into one collection are stored in another?

This should still be possible:

val a: Collection<T> = ...
val indices: List<a.Index> = ...

As 'a.Index' is just a normal type it should be possible to declare a collection containing elements of just that type (I haven't tried it out, yet, though, as I currently have no access to a development machine).

-Thorsten 


More information about the swift-evolution mailing list