<div style="white-space:pre-wrap">Yes it absolutely matters what the types are. Two floating point values can compare equal when their raw bytes differ and they can compare not equal even when their raw bytes are the same, and it would be absolutely necessary that a tuple of two floating point values behaves the same way.<br><br>Moreover, if a value is not equatable, it&#39;s nonsense to ask if tuples of two of them are equal. Otherwise, you&#39;ve effectively forced every value type to be equatable, since it&#39;d be ridiculous if (a, a) == (b, b) didn&#39;t imply a == b.<br></div><br><div class="gmail_quote"><div dir="ltr">On Sat, Oct 15, 2016 at 19:44 Haravikk via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On 14 Oct 2016, at 19:11, Karl &lt;<a href="mailto:razielim@gmail.com" class="gmail_msg" target="_blank">razielim@gmail.com</a>&gt; wrote:</div><br class="m_5562631251538914496Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><blockquote type="cite" class="gmail_msg"><div class="gmail_msg">On 14 Oct 2016, at 19:56, Haravikk &lt;<a href="mailto:swift-evolution@haravikk.me" class="gmail_msg" target="_blank">swift-evolution@haravikk.me</a>&gt; wrote:</div><br class="m_5562631251538914496Apple-interchange-newline gmail_msg"><div class="gmail_msg"><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">Huh, see, that&#39;s why I posted the thread; I didn&#39;t know you could do it that way (I&#39;ve been trying the RawRepresentable part as its own type).</div><div class="gmail_msg">In that case yes, it seems like all that&#39;s need is an expansion of what&#39;s allowable on the rhs of raw value enum cases.</div><br class="gmail_msg"></div></div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">And that’s why I come here - to share the little bits that I’ve learned :)</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I think a lot of people have misconceptions about what RawRep is, and the inheritance syntax for enums doesn’t much help that. It doesn’t affect the storage or layout of the enum whatsoever; it’s just a protocol conformance. The compiler generates these same kind of switch statements, and that’s really the only reason AFAIK that we have the limitations (e.g. int/string literal) that we do.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">There are no restrictions on what can be RawRepresentable (structs and classes can also conform), and no limitation on the type of RawType (can also be a struct or a class). You just need to implement it yourself in those cases; I’m guessing because there are complex edge-cases which we don’t want hidden away in a location you can’t easily debug.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Tuples of Ints and Strings, however, seem like they could easily be supported. For example, we could check that there are no overlapping cases.</div></div></div></div></blockquote></div><br class="gmail_msg"></div><div style="word-wrap:break-word" class="gmail_msg"><div class="gmail_msg">Does the type of the tuples really matter? For equality it should be sufficient just to compare them directly as bytes; since they will be of the same tuple type this should either result in equality or not without too much complexity, otherwise we&#39;d need to require the types are Equatable or Hashable but that seems a bit like overkill.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I&#39;ve started a preliminary proposal for tuples as enum raw value types; it&#39;s pretty straightforward so far as I&#39;m not sure what more detail is really needed, except perhaps for this equality issue:</div><div class="gmail_msg"><a href="https://github.com/Haravikk/swift-evolution/blob/master/proposals/NNNN-allow-tuples-as-enum-raw-values.md" class="gmail_msg" target="_blank">https://github.com/Haravikk/swift-evolution/blob/master/proposals/NNNN-allow-tuples-as-enum-raw-values.md</a></div></div>_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div>