[swift-evolution] [proposal] default func ==(_:_:)
davesweeris at mac.com
davesweeris at mac.com
Sat Jan 30 04:27:09 CST 2016
I think the memberwise op would have to return an array of results. For ops where it’s obvious how to reduce the array (like ==), it seems like a protocol extension or something could automatically do the “.reduce(true) { $0 && $1 }” part, and when the final answer isn’t so obvious, you could either provide the args for reduce(), or just call it yourself (maybe… depends on how it’s implemented).
I have absolutely no ideas regarding syntax.
> On Jan 30, 2016, at 01:41, Jan E. Schotsman via swift-evolution <swift-evolution at swift.org> wrote:
>
> I would like some more discussion of the proposal for a default memberwise equality function for compound types.
>
> It was suggested that some stored properties might be excluded from the comparison for equality.
> Also calculated properties might be included (presumably if at least two stored properties are excluded).
> Wouldn’t this complicate things too much (requiring two keywords?)
> If only 9 properties out of 10 are equatable should equality be based on that? What about 5 in 10?
>
> Generalisation of the mechanism (applying a protocol to aggregates of types satisfying the protocol) was suggested using a ‘memberwise’ annotation of the protocol.
> Even in case of simple protocols like Equatable, SignedIntegerType this requires a specific implementation.
> In case of Equatable the memberwise comparison results must be “anded”, for SignedIntegerType the IntMax initializer must be replaced by a tuple.
> IMHO in case of custom protocols it is unlikely that the compiler can guess (or be instructed in a simple way to provide) the intended implementation.
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list