<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I like this idea.</div><div class=""><br class=""></div><div class="">Just a few thoughts:</div><div class=""><br class=""></div><div class=""><ul class="MailOutline"><li class="">Will we need some mechanism to mark properties that shouldn’t be compared?</li><li class="">What about computed properties, could we mark these such that they will be compared as well if relevant?</li><li class="">Could I still use this even if some of my properties aren’t equatable? e.g- if nine of ten properties are equatable, could I use this protocol to generate default behaviour for the nine equatable properties, then just add support for the non-equatable one?</li></ul><div class=""><br class=""></div></div><div class="">If it will require compiler magic anyway (since we currently have no reflection API I assume it will, unless I’ve missed one), then adding support for some or all of these could make this the standard method of implementing equatable for the vast majority of classes.</div><br class=""><div><blockquote type="cite" class=""><div class="">On 27 Jan 2016, at 09:14, Dave via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">I’d expand that to allow any protocol to be annotated “@memberwise” or something, if their requirements can be satisfied in that manner.<br class=""><br class="">Have we already talked about this? I can’t remember.<br class=""><br class="">- Dave Sweeris<br class=""><br class=""><blockquote type="cite" class="">On Jan 27, 2016, at 00:40, Jan E. Schotsman via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""><br class="">Feature name - provide default func ==(_:_:) for types declared Equatable<br class=""><br class="">Author: Jan E.Schotsman<br class=""><br class="">Introduction:<br class=""><br class="">If all of a type's stored properties are Equatable it makes sense for Swift to provide a default equality implementation.<br class=""><br class="">Motivation:<br class=""><br class="">In a project where many large types are defined that need to be Equatable it gets cumbersome to write explicit equality functions for all types.<br class=""><br class="">Proposed solution<br class=""><br class="">If a type is declared Equatable, all its stored properties are Equatable and no func ==(_:_:) is defined by the developer the compiler will synthetisize a memberwise equality function.<br class="">(Recursiveness of this procedure is almost automatic)<br class=""><br class="">Impact on existing code<br class=""><br class="">There is no impact on existing code. Equality functions equal to the default implementation can simply be removed.<br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></blockquote><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></body></html>