> On Oct 14, 2017, at 7:55 PM, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> > Ordered, yes, but it’s only admittedly poor wording that suggests 
> > multi-pass, and I don’t think anything there suggests finite.
> 
> If a Sequence is "guaranteed to iterate the same every time," then surely it 
> must be multi-pass; what's the alternative?

Single-pass, but where two dictionaries/sets with the same elements would be 
guaranteed to output the same ordering. That ordering can be arbitrary, but it 
shouldn’t leak internal representation such that the method used to create 
identical things affects the outcome of generic methods because of differences 
in internal representation.


>  It would be better to say that the iteration order is well-defined. That 
> will almost always mean documented, and usually predictable though obviously 
> e.g. RNGs and iterating in random order will not be predictable by design.
> 
>> That's actually more semantically constrained than what Swift calls a 
>> `Collection` (which requires conforming types to be multi-pass and(?) 
>> finite). By contrast, Swift's `SpongeBob` protocol explicitly permits 
>> conforming single-pass, infinite, and/or unordered types. 
> 
> I think you’re talking about Sequence here, I’ve lost track of your nonsense 
> by now. Yes, the current Swift protocol named Sequence allows unordered 
> types. You seem to keep asserting that but not actually addressing my 
> argument, which is that allowing Sequences to be unordered with the current 
> API is undesired and actively harmful, and should therefore be changed.
> 
> What is harmful about it?

After thinking about it, I think the harmful bit is that unordered sequences 
are leaking internal representation (In your example, this is causing people to 
be surprised when two sets with identical elements are generating different 
sequences/orderings based on how they were created).  You are correct when you 
say that this problem is even true for for-in.

Thanks,
Jon
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to