Please be careful when wording this proposal.  You want derived conformances, 
but don't obscure that message with the claim that every type admits a useful 
Equatable instance. It is most certainly not the case that every value type has 
a useful (read [mostly]: decidable) equality.  A few counterexamples, the type 
of lazy streams 
(https://github.com/typelift/Swiftz/blob/swift-develop/Swiftz/Stream.swift#L24) 
requires infinite space to evaluate a useful answer.  The type of functions 
[without a modulus of continuity] also don't admit a useful, or even canonical, 
equality (in Swift at least).  

~Robert Widmann

2016/09/10 8:24、Daniel Tartaglia via swift-evolution 
<[email protected]> のメッセージ:

> Now that Swift 3 is out the door, I’m going to float this proposal again…
> 
> Given that every value type should be equatable (rational here): 
> https://www.andrewcbancroft.com/2015/07/01/every-swift-value-type-should-be-equatable/
> And that many, if not most, value types consist of properties that are value 
> types.
> Then the language should make it easy to conform to the Equatable protocol.
> 
> In other words, if I declare my value type as Equatable, and it is 
> exclusively composed of value types that are already equatable, then 
> implementing the actual == function should be optional (or maybe even 
> forbidden.)
> 
> Implementing == in such cases is tedious boilerplate that the compiler should 
> be able to infer on its own.
> 
> Does anybody want to help me write up an official proposal?
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to