Sent from my iPhone

> On Nov 21, 2017, at 3:46 PM, Tony Allevato <tony.allev...@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. 

  - Doug

> 
>> On Tue, Nov 21, 2017 at 3:10 PM Douglas Gregor via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> 
>>>> On Nov 21, 2017, at 3:05 PM, Slava Pestov <spes...@apple.com> wrote:
>>>> 
>>>> 
>>>> 
>>>> On Nov 21, 2017, at 6:02 PM, David Hart <da...@hartbit.com> wrote:
>>>> 
>>>> Can somebody explain to me what are 
>>>>  nominal and structural types and why Optional should really be a 
>>>> structural type?
>>> 
>>> Nominal types are structs, enums, protocols and classes. They have 
>>> declarations in source and are uniquely identified by their name. 
>>> Structural types are functions, meta types, protocol compositions, and 
>>> tuples.
>>> 
>>> The distinction is not as clear as you might think because as Chris said, 
>>> you can imagine tuple being implemented as ‘struct Tuple<T…>’, similarly 
>>> functions and meta types could also be written as such. It is mostly a 
>>> syntactic distinction in the language, but it has far-reaching consequences 
>>> in internal representations, which is why for now it would be tricky to 
>>> have structural types conform to protocols.
>> 
>> Right. Optionals are a tricky case because we wanted them to be nominal so 
>> we could write extensions on them and make them conform to protocols, but, 
>> they’re so integral to the language that they are really treated like a 
>> structural type.
>> 
>>      - Doug
>> 
>> 
>> _______________________________________________
>> 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

Reply via email to