> On Nov 21, 2017, at 11:51 PM, Douglas Gregor via swift-evolution 
> <[email protected]> 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?

The reason these are on concrete types and not, say, Collection is because we 
can’t conditionally conform protocols yet, right?

Dave
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to