[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