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