> Am 21.11.2017 um 02:39 schrieb Kelvin Ma via swift-evolution > <swift-evolution@swift.org>: > > when SE-185 went through swift evolution, it was agreed that the next logical > step is synthesizing these conformances for tuple types, though it was left > out of the original proposal to avoid mission creep. I think now is the time > to start thinking about this. i’m also tacking on Comparable to the other two > protocols because there is precedent in the language from SE-15 that tuple > comparison is something that makes sense to write. > > EHC conformance is even more important for tuples than it is for structs > because tuples effectively have no workaround whereas in structs, you could > just manually implement the conformance. this is especially relevant in > graphics and scientific contexts where tuples are used to represent color > values and points in 2D or 3D space. today you still can’t do things like > > let lattice = Dictionary<(Int, Int, Int), AssociatedValue>() . > > the commonly suggested “workaround”, which is to “upgrade” the tuple to a > struct is problematic for two reasons: > > 1. it defeats the purpose of having tuples in the language > > 2. tuples are a logical currency type for commonly used types like points and > vectors. If every library defined its own custom point/vector types we would > soon (already?) have a nightmare situation where no geometry/graphics library > would be compatible with any other geometry/graphics library, at least not > without a lot of annoying, let alone wasteful swizzling and manual conversion > routines in the main application.
Actually I don't think that tuples should be used for points and vectors at all, because I prefer to differentiate these two concepts which requires nominal types, e.g. struct Point { func distance(to point: Point) -> Vector func offsetBy(_ offset: Vector) -> Point } Notwithstanding this disagreement I too think that EHC conformance for tuples would be useful. -Thorsten > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution