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
