> On Oct 15, 2017, at 3:41 PM, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I’ll have to mull this over to see if I can come up with a coherent and 
> (more) specific requirement for what makes an Iterable a Sequence, since 
> clearly “documented” isn’t enough.  Perhaps something along the lines that 
> any two Sequences that compare equal must iterate the same.
> 
>> […]
>> Apple documentation calls this one of the "order-dependent" methods. It is 
>> surely acceptable for a type that conforms to an order-dependent protocol to 
>> have methods that are order-dependent; they do, however, have to be clearly 
>> order-dependent to avoid confusion on unordered types.
> 
> I’m not clear on what you’re trying to get across here. It seems you’re 
> saying unordered types shouldn’t have order-dependent methods, which is 
> exactly what I’ve been arguing.
> 
> No, I'm saying, essentially, that there are no truly unordered types in 
> Swift; `Set` and `Dictionary` lead double lives modeling unordered 
> collections on the one hand and ordered collections on the other. The 
> order-dependent methods can continue to exist; they just need to be clearly 
> named so that users know when they're using an instance of `Set` in the 
> manner of an unordered collection and when they're using an instance of `Set` 
> in the manner of an ordered collection.

Is the order of elements returned from Set/Dictionary guaranteed not to change 
based on implementation?  For instance, the elements of a dictionary may shift 
around as I add items, and they may be different in different runs of a program.

If we document/say that Set will always return elements in the order they were 
added, then it may prevent us from using a more efficient implementation of 
Sets in a future version of Swift.

Just to check what we are saying.  I am saying that we can’t really build 
generic algorithms on something which is undefined (because we are leaking 
implementation details, and depending on private implementation details leads 
to problems).  You are saying that the leaking of implementation details is a 
feature, not a bug… and that we should just document them and consider them 
fixed ABI?

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

Reply via email to