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

Slava Pestov spestov at apple.com
Tue Nov 21 17:05:16 CST 2017



> On Nov 21, 2017, at 6:02 PM, David Hart <david at 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.

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


More information about the swift-evolution mailing list