[swift-evolution] [Pitch] Make Optional, Array, and Dictionary conditionally Equatable

Karl Wagner razielim at gmail.com
Wed Nov 22 11:26:03 CST 2017



> On 22. Nov 2017, at 07:51, Douglas Gregor via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Hi all,
> 
> We’re having a bit of a debate <https://github.com/apple/swift/pull/12910> over the question of whether SE-0143 “Conditional Conformances” <https://github.com/apple/swift-evolution/blob/master/proposals/0143-conditional-conformances.md> actually proposes any standard library changes at all, or whether they should all be brought up separately. So, I’ll pitch the pieces that I’d love to put into 4.1 to see if they’re as obvious as I think they should be :)
> 
> Proposal: make Optional, Array, ArraySlice, ContiguousArray, and Dictionary conform to Equatable when their type parameters are Equatable (and Set always conform to Equatable). Specifically, add to the standard library:
> 
> 	extension Optional: Equatable where Wrapped: Equatable { /*== already exists */ }
> 	extension Array: Equatable where Element: Equatable { /*== already exists */ }
> 	extension ArraySlice: Equatable where Element: Equatable { /*== already exists */ }
> 	extension ContiguousArray: Equatable where Element: Equatable { /*== already exists */ }
> 	extension Dictionary: Equatable where Value: Equatable { /*== already exists */ }
> 	extension Set: Equatable { /*== already exists */ }
> 
> Motivation: we need these for ==/!= to properly compose. It’s a highly-requested feature and an obvious “first use” of conditional conformances for the standard library that is unlikely to break any code.
> 
> Implementation: https://github.com/apple/swift/pull/13046 <https://github.com/apple/swift/pull/13046>
> 
> Thoughts?
> 
> 
> 	- Doug
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

I think they’re supposed to be brought up separately. There are actually a few areas of the standard library that have become outdated as we accepted new language features without corresponding proposals about using them. For example, we have top-level SetIndex and DictionaryIndex typealiases and SetIterator and DictionaryIterator types; dinosaurs from the era before nested generics.

As for this proposal? +1. Obviously.

- Karl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171122/3f2d8780/attachment.html>


More information about the swift-evolution mailing list