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

Thoughts?


        - Doug

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

Reply via email to