<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><span></span></div><div><div><div style="direction: inherit;">A few notes</div><br>~Robert Widmann</div><div><br>2016/09/16 0:54、Muhammad Tahir Vali via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; のメッセージ:<br><br></div><blockquote type="cite"><div><div dir="ltr">The purpose of this proposal is to implement Tuples as a named typed in Swift. Tuples can be extremely useful for pattern matching, returning multiple values from a function, and destructing content to the list. C# has tuples as a named type as well I believe. Currently, Tuples in Swift are anonymous types that have limited functionality but this proposal can help solve that.</div></div></blockquote><div style="direction: inherit;"><br></div><div style="direction: inherit;">Languages like C#, Scala, et al. that decided that Tuple should be a nominal type have, in my opinion, made the wrong choice. &nbsp;A tuple is an anonymous product; its content and not its name is what is important otherwise you'd just use a struct.</div><div style="direction: inherit;"><br></div><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>The underlying implementations of this proposal can allow the following :</div><div><br></div><div>1) having parameters and return values of type : Tuple</div><div>- enforces much more intuitive and clean code&nbsp;</div><div>- less code too read&nbsp;</div></div></div></blockquote><div style="direction: inherit;"><br></div><div style="direction: inherit;">This is already valid in Swift.</div><div style="direction: inherit;"><br></div><div style="direction: inherit;">func flip&lt;A, B&gt;(_ t : (A, B)) -&gt; (B, A) {</div><div style="direction: inherit;">&nbsp; return (t.1, t.0)</div><div style="direction: inherit;">}</div><div style="direction: inherit;"><br></div><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>2) implicit &amp; explicit optionals with tuples !!!&nbsp;</div><div>- Can definitely take out many nested optional chains if tuples internally checks for .Some or .None in each variable stored inside of an optional of type Tuple.</div></div></div></blockquote><div style="direction: inherit;"><br></div><div style="direction: inherit;">This operation will not scale well without variadic generics. &nbsp;Do you really want ~8 different functions in stdlib that examine the contents of tuples when it's much easier to just pattern match on the tuple in a `switch` or `case let` statement?</div><div style="direction: inherit;"><br></div><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>3) making tuples variable declarations more popular for functional call</div><div>- parameter names in function calls within tuple variables can be used as getter</div></div></div></blockquote><div style="direction: inherit;"><br></div><div style="direction: inherit;">This is, again, already supported.</div><div style="direction: inherit;"><br></div><div style="direction: inherit;">func project(_ t : (l : String, r : Int)) -&gt; Int {</div><div style="direction: inherit;">&nbsp; return t.r</div><div style="direction: inherit;">}</div><div style="direction: inherit;"><br></div><div style="direction: inherit;">f(("Hello World, 42))</div><div style="direction: inherit;"><br></div><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>My proposal was very brief but I hope its one worth embracing. I didnt get to talk about applications but those are pretty self-explanatory. This definitely widens the vision for Swift and could be a "a-ha" thing for Swift developers. :)</div></div></div></blockquote><div style="direction: inherit;"><br></div><div style="direction: inherit;">In short, I don't really see how this achieves the goal of making tuples more flexible. &nbsp;Perhaps you have concrete examples of what is wrong and what this proposal intends to fix?</div><div style="direction: inherit;"><br></div><blockquote type="cite"><div><div dir="ltr"><div><br></div><div><div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Best Regards,<div><br></div><div>Muhammad T. Vali</div></div></div>
</div></div></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></div></body></html>