<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>+1 It looks good to me.</div><div id="AppleMailSignature"><br></div><div id="AppleMailSignature">Probably a first step toward something more.</div><div id="AppleMailSignature"><br>Pierre</div><div><br>Le 10 mars 2016 à 05:54, Howard Lovatt via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; a écrit&nbsp;:<br><br></div><blockquote type="cite"><div><div dir="ltr">+1. It would be handy for:<div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><span style="font-family:Monaco;font-size:10px">typealias Vec3&lt;T&gt; = (T, T, T)</span></div><div><span style="font-family:Monaco;font-size:10px">typealias Mat3x3&lt;T&gt; = (</span><span style="font-family:Monaco;font-size:10px">Vec3&lt;T&gt;</span><span style="font-family:Monaco;font-size:10px">,&nbsp;</span><span style="font-family:Monaco;font-size:10px">Vec3&lt;T&gt;</span><span style="font-family:Monaco;font-size:10px">,&nbsp;</span><span style="font-family:Monaco;font-size:10px">Vec3&lt;T&gt;</span><span style="font-family:Monaco;font-size:10px">)</span><span style="font-family:Monaco;font-size:10px"><br></span></div></blockquote></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature">&nbsp; -- Howard.<br></div></div>
<br><div class="gmail_quote">On 10 March 2016 at 15:47, Chris Lattner via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Hi All,</div><div><br></div><div>I’ve started prototyping generic type aliases in master, but we’d like to run this through the evolution process for discussion.&nbsp; Comments and discussion are welcome.&nbsp; Here’s the start of the email thread for the actual formal proposal:</div><div><br></div><div><b><br></b></div><b>Introduction</b><br><br>This proposal aims to add generic typealiases to Swift.<br><br>Swift-evolution thread:&nbsp;&lt;you are here&gt;<br><br><b>Motivation</b><br><br>Generic typealiases are a somewhat obvious generalization of the existing Swift model for type aliases, which allow you to provide a name for an existing nominal generic type, or to provide a name for a non-nominal type (e.g. tuples, functions, etc) with generic parameters.<div><br></div><div><b>Proposed solution</b><br><br>The solution solution is straight-forward: allow type aliases to introduce type parameters, which are in scope for their definition.&nbsp; This allows one to express things like:</div><div><br></div><div><div style="margin:0px;font-size:10px;line-height:normal;font-family:Monaco">&nbsp; &nbsp;&nbsp;typealias StringDictionary&lt;T&gt; = Dictionary&lt;String, T&gt;</div><div style="margin:0px;font-size:10px;line-height:normal;font-family:Monaco">&nbsp; &nbsp; typealias IntFunction&lt;T&gt; = (T) -&gt; Int</div><div style="margin:0px;font-size:10px;line-height:normal;font-family:Monaco">&nbsp; &nbsp; typealias MatchingTriple&lt;T&gt; = (T, T, T)</div><div style="margin:0px;font-size:10px;line-height:normal;font-family:Monaco">&nbsp; &nbsp; typealias BackwardTriple&lt;T1,T2,T3&gt; = (T3, T2, T1)</div><div><br></div>This is consistent with the rest of Swift’s approach to generics, and slots directly into the model.</div><div><br><b>Detailed design</b><br><br>This is a minimal proposal for introducing type aliases into Swift, and intentionally chooses to keep them limited to being “aliases”.&nbsp; As such, additional constraints are not allowed in this base proposal, e.g. you can’t write:</div><div><br></div><div><div style="margin:0px;font-size:10px;line-height:normal;font-family:Monaco">&nbsp; &nbsp; typealias StringDictionary&lt;T where T : Hashable&gt; = Dictionary&lt;String, T&gt;</div><div><br></div><div>Otherwise, generic type aliases follow the model of type aliases and the precedent of the other generic declarations in Swift.&nbsp; For example, they allow the usual access control features that type aliases support.&nbsp; Similarly, like non-generic type aliases, generic type aliases cannot be “resilient”.</div><br><b>Impact on existing code</b><br><br>This is a new feature, so there is no impact on existing code.<br><br></div></div><br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></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></body></html>