[swift-evolution] Synthesizing Equatable, Hashable, and Comparable for tuple types

Douglas Gregor dgregor at apple.com
Tue Nov 21 23:25:01 CST 2017



> On Nov 21, 2017, at 9:21 PM, Chris Lattner <clattner at nondot.org> wrote:
> 
> 
> 
>> On Nov 21, 2017, at 7:19 PM, Douglas Gregor via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> 
>> 
>> Sent from my iPhone
>> 
>> On Nov 21, 2017, at 3:46 PM, Tony Allevato <tony.allevato at gmail.com <mailto:tony.allevato at gmail.com>> wrote:
>> 
>>> Does that mean that once structural types can conform to protocols, would the core team want to remove Optional as a nominal type and just use “T?”? 
>> 
>> Yes; at least, it’s a direction we’ve discussed a number of times. 
>> 
>>> Or has that ship sailed because of source compatibility and you just don’t want to introduce any new nominals that shadow structurals?
>> 
>> typealias Optional<T> = T?
>> 
>> Should address source compatibility. 
> 
> Or alternatively, one could decide to make the generics system *only and forever* work on nominal types, and make the syntactic sugar just be sugar for named types like Swift.Tuple, Function, and Optional.  Either design could work.

We don’t have a way to make it work for function types, though, because of parameter-passing conventions. Well, assuming we don’t invent something that allows:

	Function<Double, inout String>

to exist in the type system. Tuple labels have a similar problem.

	- Doug


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171121/3efb45f3/attachment.html>


More information about the swift-evolution mailing list