> Am 15.07.2016 um 18:29 schrieb Saagar Jha <saagarjh...@gmail.com>:
> 
> Here's a value type that uses custom equality (at least, I think so): String. 
> Since it uses extended grapheme clusters, internally two Strings may be 
> composed of different Unicode scalars, but if they create the same Characters 
> they are considered to be equal.

Good point. But shouldn’t this be another type of equality then or do they 
behave exactly the same and are just implemented differently? Because if not, 
this seems to be introducing mixed-type comparisons like `5l == 5` or 
`Point2D(0, 0) == Point3D(0, 0, 0) which are bad since they make it impossible 
to guarantee reflexivity, symmetry, and transitivity. Swift does a hard job to 
enforce this from the programmer. If this is really intended, then there should 
be a fixed implementation for equality of value types, which can be overridden, 
but which leads to a warning (which has to be suppressed with some kind of 
annotation or so). Because, these custom implementations can do harm.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to