> On Jun 9, 2017, at 10:19 AM, Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Let me try to redirect this conversation, if I may.
> 
> As far as I can tell, SE-0069 states plainly that the plan of record is to 
> offer a value type called OrderedSet in Foundation, but resources to design 
> and implement were not then available.
> 
> So, little point in having a vote as to whether one is in favor of OrderedSet 
> or not. In my view, the questions to be answered are:
> 
> For the core team–
> 
> * Is it still the plan to offer value types postponed from SE-0069 as a 
> future addition to Foundation?

*I* think it’s still a good idea, and I suspect that others on the core team 
will agree.

> * If so, is that a priority in the Swift 5 timeframe, and how can the 
> community help to bring about this addition?

I wouldn’t consider it a “priority”, in the sense that I can’t imagine anything 
in Swift 5 that would absolutely require us to introduce this functionality in 
that time frame. It’s a bit of a nice-to-have-at-any-point, noting of course 
that bridging NSOrderedSet in existing APIs is a nontrivial source-breaking 
change.

Having a proposed API and implementation on hand makes it easier to add this 
functionality, of course.

> If not, for the whole community–
> 
> * Is it wise to implement such a type in the standard library? Should we 
> simply bring over the native implementation from Swift Package Manager? What 
> are the implications for bridging?

Obviously, we’d want an efficient copy-on-write, native implementation; the 
Swift Package Manager implementation is a bit more bare-bones than we’d want: 
absolute performance matters, so having a separate Set + Array in the struct 
probably isn’t good enough. Bridging performance matters, so we’d probably want 
the one-pointer representation like array uses where the pointer can be vended 
directly to Objective-C.

        - Doug

> On Fri, Jun 9, 2017 at 11:38 Remy Demarest via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> +1 for ordered set and dictionary, and please add ordered dictionary in ObjC 
> as well.
> 
> Envoyé de mon iPhone
> 
> Le 9 juin 2017 à 03:11, Robert Bennett via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
> 
>> +1, and would also like to see OrderedDictionary as well.
>> 
>> On Jun 9, 2017, at 12:50 AM, Jeff Kelley via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>>> I would be in favor of it; there have been a few times (including Core 
>>> Data, as you mentioned) where I would have used it had it been available.
>>> 
>>> 
>>> Jeff Kelley
>>> 
>>> slauncha...@gmail.com <mailto:slauncha...@gmail.com> | @SlaunchaMan 
>>> <https://twitter.com/SlaunchaMan> | jeffkelley.org <http://jeffkelley.org/>
>>>> On Jun 7, 2017, at 2:10 PM, Maik Koslowski via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> 
>>>> Hello,
>>>> 
>>>> in the past there have been a few requests for an OrderedSet 
>>>> implementation in Swift. In the proposal 
>>>> https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md
>>>>  
>>>> <https://github.com/apple/swift-evolution/blob/master/proposals/0069-swift-mutability-for-foundation.md>
>>>>  was mentioned that the OrderedSet will be considered for the feature.
>>>> 
>>>> However, since then there were a few discussions on OrderedSet but it 
>>>> doesn’t get much attention and there wasn’t any comment about it from the 
>>>> swift team.
>>>> 
>>>> I want to bring up some points, why an OrderedSet is needed in the base 
>>>> library.
>>>> 
>>>> 1. CoreData is probably the most obvious place where people would use an 
>>>> ordered set. Especially when working with large amounts of data, 
>>>> presorting can save a lot of time and battery life. If a bridgeable 
>>>> ordered set was part of the standard library we could use a ordered set in 
>>>> swift without having to use the NSOrderedSet from objective c. Which would 
>>>> be pretty nice in my opinion. Even when using a NSOrderedSet we couldn’t 
>>>> have a generic version of it.
>>>> 
>>>> 2. A shared datamodel between App and Server. One main advantage of having 
>>>> web servers written in Swift is that we can share code between the server 
>>>> and the app. For servers performance does matter a lot, since they are 
>>>> usually working with much more data than apps. Databases are represented 
>>>> as sets and fetching sorted data from the database can be represented as 
>>>> an ordered set. However, since we don’t have ordered sets we have to 
>>>> choose either a normal set or an array. Sets don’t have an order and 
>>>> arrays can contain the same object multiple times, which makes them both a 
>>>> less suitable choice.
>>>> 
>>>> 3. Swift has the potential to be used for education. There is a lot of 
>>>> support, for example the playground app on iPad. When it comes to the 
>>>> theory behind data structures and algorithms or to the theory of 
>>>> computation a defined order plays an important role.
>>>> 
>>>> The biggest issue is that we always have to copy data from a set into an 
>>>> array to have it in a sorted order with losing the safety of uniqueness. 
>>>> Which is not suitable for a safe and performance oriented programming 
>>>> language at all.
>>>> 
>>>> Last but not least, it fits in the goals of Swift 4 stage 2 and an ordered 
>>>> set can be found in other popular programming languages, too.
>>>> 
>>>> What do you think?
>>>> 
>>>> Best regards,
>>>> 
>>>> Maik
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

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

Reply via email to