<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Really great to hear that you are planning for Swift to be able to do these kinds of things!<div class=""><br class=""></div><div class="">I tried to see how far I could get (working from memory of a Haskell library; Boost.Units seems quite similar at first glance), but failed of course because of the missing parameterized recursive typealiases:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">import</span> Foundation</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class="">public<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span>protocol<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> Peano {}</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(88, 110, 117);" class=""><span style="color: rgb(133, 153, 1);" class="">public</span><span style="color: rgb(131, 148, 150);" class=""> </span><span style="color: rgb(133, 153, 1);" class="">struct</span><span style="color: rgb(131, 148, 150);" class=""> Zero : </span><span style="color: rgb(181, 137, 1);" class="">Peano</span><span style="color: rgb(131, 148, 150);" class=""> {}</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">struct</span> Succ&lt;P : Peano&gt; : <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Peano</span> {}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">struct</span> Pred&lt;S : Peano&gt; : <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Peano</span> {}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class="">public<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span>typealias<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> One = </span><span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Succ</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span><span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class="">public<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span>typealias<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> Two = </span><span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Succ</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span><span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">One</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span> MinusOne = <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Pred</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>&gt;</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span> MinusTwo = <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Pred</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">One</span>&gt;</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><div class="">// Quantity with SI Units</div><div class=""><br class=""></div></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(88, 110, 117);" class="">// TODO: extend by more type parameters for the remaining SI units</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">struct</span> Quantity&lt;Length: Peano, Time: Peano, Mass: Peano&gt; : <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Equatable</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Comparable</span> {</div><p style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">let</span> value: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Double</span></div><p style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class="">&nbsp;&nbsp; &nbsp;<br class="webkit-block-placeholder"></p><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">init</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">_</span> value: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Double</span>) {</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">self</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span> = value</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">func</span> ==&lt;L,T,M&gt;(lhs: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span>&gt;, rhs: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span>&gt;) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Bool</span> {</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> lhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span> == rhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">func</span> &lt;&lt;L,T,M&gt;(lhs: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span>&gt;, rhs: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span>&gt;) -&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Bool</span> {</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> lhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span> &lt; rhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">public</span>&nbsp;<span style="color: rgb(133, 153, 1);" class="">func</span>&nbsp;+&lt;L,T,M&gt;(lhs:&nbsp;<span style="color: rgb(181, 137, 1);" class="">Quantity</span>&lt;<span style="color: rgb(181, 137, 1);" class="">L</span>,<span style="color: rgb(181, 137, 1);" class="">T</span>,<span style="color: rgb(181, 137, 1);" class="">M</span>&gt;, rhs:&nbsp;<span style="color: rgb(181, 137, 1);" class="">Quantity</span>&lt;<span style="color: rgb(181, 137, 1);" class="">L</span>,<span style="color: rgb(181, 137, 1);" class="">T</span>,<span style="color: rgb(181, 137, 1);" class="">M</span>&gt;) -&gt;&nbsp;<span style="color: rgb(181, 137, 1);" class="">Quantity</span>&lt;<span style="color: rgb(181, 137, 1);" class="">L</span>,<span style="color: rgb(181, 137, 1);" class="">T</span>,<span style="color: rgb(181, 137, 1);" class="">M</span>&gt;&nbsp;{</div><div style="margin: 0px; line-height: normal;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(133, 153, 1);" class="">return</span>&nbsp;<span style="color: rgb(181, 137, 1);" class="">Quantity</span>&lt;<span style="color: rgb(181, 137, 1);" class="">L</span>,<span style="color: rgb(181, 137, 1);" class="">T</span>,<span style="color: rgb(181, 137, 1);" class="">M</span>&gt;(lhs.<span style="color: rgb(211, 54, 130);" class="">value</span>&nbsp;+&nbsp;rhs.<span style="color: rgb(211, 54, 130);" class="">value)</span></div><div style="margin: 0px; line-height: normal;" class="">}</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; color: rgb(88, 110, 117);" class="">// Missing language feature: parameterized recursive typealias</div><div style="margin: 0px; line-height: normal; color: rgb(88, 110, 117);" class="">// i.e. the following typealiases are currently not possible</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Add&lt;Zero, P: Peano&gt; = P</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Add&lt;P: Peano, Zero&gt; = P</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Add&lt;Succ&lt;P1&gt;, Succ&lt;P2&gt;&gt; = Add&lt;Succ&lt;Succ&lt;P1&gt;&gt;,P2&gt;</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Add&lt;Succ&lt;P1&gt;, Pred&lt;P2&gt;&gt; = Add&lt;P1,P2&gt;</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Add&lt;Pred&lt;P1&gt;, Succ&lt;P2&gt;&gt; = Add&lt;P1,P2&gt;</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Add&lt;Pred&lt;P1&gt;, Pred&lt;P2&gt;&gt; = Add&lt;P1,Pred&lt;Pred&lt;P2&gt;&gt;&gt;</div><div style="margin: 0px; line-height: normal; min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Sub&lt;Zero, P: Peano&gt; = P</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Sub&lt;P: Peano, Zero&gt; = P</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Sub&lt;Succ&lt;P1&gt;, Succ&lt;P2&gt;&gt; = Sub&lt;P1,P2&gt;</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Sub&lt;Succ&lt;P1&gt;, Pred&lt;P2&gt;&gt; = Sub&lt;P1,Pred&lt;Pred&lt;P2&gt;&gt;</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Sub&lt;Pred&lt;P1&gt;, Succ&lt;P2&gt;&gt; = Sub&lt;Pred&lt;Pred&lt;P1&gt;&gt;,P2&gt;</div><div style="margin: 0px; line-height: normal;" class=""><span style="color: rgb(133, 153, 1);" class="">typealias</span>&nbsp;Sub&lt;Pred&lt;P1&gt;, Pred&lt;P2&gt;&gt; = Sub&lt;P1,P2&gt;</div></div><div class=""><br class=""></div></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class="">public<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span>func<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> *</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; &lt;L1,T1,M1,L2,T2,M2,L,T,M <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">where</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span> == <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Add</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L1</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L2</span>&gt;, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span> == <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Add</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T1</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T2</span>&gt;, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span> == <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Add</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M1</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M2</span>&gt;&gt;</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(181, 137, 1);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&nbsp; &nbsp; (lhs: </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>L1<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>T1<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>M1<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;, rhs: </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>L2<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>T2<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>M2<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;) -&gt; </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>L<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>T<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>M<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">{</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span>&gt;(lhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span> * rhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span>)</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class="">public<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span>func<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> /</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; &lt;L1,T1,M1,L2,T2,M2,L,T,M <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">where</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span> == <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Sub</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L1</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L2</span>&gt;, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span> == <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Sub</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T1</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T2</span>&gt;, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span> == <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Sub</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M1</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M2</span>&gt;&gt;</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(181, 137, 1);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&nbsp; &nbsp; (lhs: </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>L1<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>T1<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>M1<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;, rhs: </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>L2<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>T2<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>M2<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;) -&gt; </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>L<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>T<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">,</span>M<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt;</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">{</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">L</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">T</span>,<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">M</span>&gt;(lhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span> / rhs.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">value</span>)</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(88, 110, 117);" class="">// Defining some nice typealiases with which to work</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(181, 137, 1);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> Scalar &nbsp; = </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>Zero<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">, </span>Zero<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">, </span>Zero<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt; </span><span style="font-variant-ligatures: no-common-ligatures; color: #586e75" class="">// dimensionless</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span> Length &nbsp; = <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">One</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #586e75" class="">// meter</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span> Time &nbsp; &nbsp; = <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">One</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #586e75" class="">// seconds</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span> Mass &nbsp; &nbsp; = <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Quantity</span>&lt;<span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Zero</span>, <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">One</span>&gt; <span style="font-variant-ligatures: no-common-ligatures; color: #586e75" class="">// kilogram</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(181, 137, 1);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> Velocity = </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>One<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">, </span>MinusOne<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">, </span>Zero<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt; </span><span style="font-variant-ligatures: no-common-ligatures; color: #586e75" class="">// m/s</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(181, 137, 1);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">typealias</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> Newton &nbsp; = </span>Quantity<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&lt;</span>One<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">, </span>MinusTwo<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">, </span>One<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class="">&gt; </span><span style="font-variant-ligatures: no-common-ligatures; color: #586e75" class="">// m*kg/s^2</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class="">public<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span>extension<span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Double</span><span style="font-variant-ligatures: no-common-ligatures; color: #839496" class=""> {</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(133, 153, 1);" class=""><span style="color: rgb(131, 148, 150);" class="">&nbsp; &nbsp;&nbsp;</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">var</span> m: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Length</span> {</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Length</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">self</span>)</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">var</span> s: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Time</span> {</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Time</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">self</span>)</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">public</span> <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">var</span>&nbsp;kg: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Mass</span> {</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">return</span> <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Mass</span>(<span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">self</span>)</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">&nbsp; &nbsp; }</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class="">}</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150); min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">let</span> dist = <span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">10</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">m +&nbsp;</span><span style="color: rgb(41, 161, 152);" class="">5</span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">.m</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">let</span> time = <span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">20</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">s</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">let</span> mass = <span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">5</span>.<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">kg</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">let</span> velocity: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Velocity</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">dist</span> <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">/</span> <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">time</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #859901" class="">let</span> force: <span style="font-variant-ligatures: no-common-ligatures; color: #b58901" class="">Newton</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">mass</span> <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">*</span> <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">dist</span> / (<span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">time</span> <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">*</span> <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">time</span>)</div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><br class=""></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px;" class="">-Thorsten</span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px;" class=""><br class=""></span></div><div style="margin: 0px; font-size: 13px; line-height: normal; font-family: Menlo; color: rgb(131, 148, 150);" class=""><span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px;" class=""><br class=""></span></div><div><blockquote type="cite" class=""><div class="">Am 31.12.2015 um 18:25 schrieb Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt;:</div><br class="Apple-interchange-newline"><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><blockquote type="cite" class=""><div class=""><br class="Apple-interchange-newline">On Dec 25, 2015, at 4:43 PM, Nickolas Pohilets via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">If Swift would support non-type generic parameters, then I would like to have Boost.Unit library (<a href="http://www.boost.org/doc/libs/1_60_0/doc/html/boost_units.html" class="">http://www.boost.org/doc/libs/1_60_0/doc/html/boost_units.html</a>) available in Swift.</div></div></blockquote><div class=""><br class=""></div>Yes, that’s an excellent design. &nbsp;We really want to do this when we get the necessary language features (I hope we might also come up with some that improve readability a bit over what you can do in C++).</div><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_extra" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""><div class="gmail_quote">2015-12-25 4:36 GMT+01:00 Stephen Christopher via swift-evolution<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span>:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div dir="ltr" class="">I have been working for a couple weeks (since the previous [newtype discussion](<a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151207/001821.html" target="_blank" class="">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151207/001821.html</a>) ) on a related pitch. There seem to me to be multiple ways to solve this problem - a newtype(esque) keyword, struct subtyping, or forwarding as Matthew is suggesting. I’d hoped to have a discussion starter out before the holidays, but it takes a fair amount of work to put together even a decent draft for a proposal. This is top of my list currently for a way to contribute though. Looking forward to the ensuing discussions.<div class=""><br class=""></div><div class="">Thanks for the pointer on class delegation. I’ve looked at delegated properties there (which came up in relation to Joe’s recent proposal for behaviors on properties).</div><div class="gmail_extra"><br clear="all" class=""><div class=""><div class=""><div dir="ltr" class="">- Step Christopher<div class=""><br class=""></div><div class=""></div><div class=""><br class=""></div></div></div></div><div class=""><div class="h5"><br class=""><div class="gmail_quote">On Thu, Dec 24, 2015 at 2:40 PM, Matthew Johnson via swift-evolution<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><br class=""><br class="">Sent from my iPad<br class=""><span class=""><br class="">&gt; On Dec 24, 2015, at 1:07 PM, Tino Heth &lt;<a href="mailto:2th@gmx.de" target="_blank" class="">2th@gmx.de</a>&gt; wrote:<br class="">&gt;<br class="">&gt;<br class="">&gt;&gt; I'm planning to write a proposal for automatic forwarding.<br class="">&gt; Something like class delegation in Kotlin?<br class="">&gt; Please hurry, I've no work to distract me for the rest of the year, and extending typealias could be a very quick proposal ;-)<br class=""><br class=""></span>Details are still brewing.&nbsp; I am not familiar with class delegation in Kotlin but will look it up.&nbsp; Thanks for mentioning it!<br class=""><br class="">I plan to spend a lot of time on Swift proposal work over the next week and a half but can't make any promises on timing.&nbsp; I made that mistake with my proposal on flexible memberwise initialization which ended up taking a couple weeks longer than I expected (for several reasons).&nbsp; What I can say is that this is pretty high on my Swift proposal priority list.<br class=""><br class="">Matthew<br class=""><div class=""><div class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></div></blockquote></div><br class=""></div></div></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=F3-2FhZ2ZT-2F5bSvaJOoTvgalN0e-2BU0US-2FQkEU38GOYp5uqcG-2BT-2BgCAM5jeVklylPeXjXsS0Q7SwJwy3yHAfmWE3Kui4LbB8nL7-2F67E2XkFNH3zd1dvkeaCD2JkZi7-2FaO0o7qrGCxnwTlXMWqiDAb7xpfxfZ1vQkUBXx0bvS4TJM4qSzmQ-2FxHg2SCzOCRV3XWxwku38IkedXFOaje-2Bkm2QHCN5Ho0V9lGX8InSDUkSCdbw-3D" alt="" width="1" height="1" border="0" class="" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;"><span class="Apple-converted-space">&nbsp;</span><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""><br class=""></blockquote></div><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=JfMPa-2F7wwZPzsZ3QKA8NjtONIYX4SjbWuUxtpfsTY2gp1Hyorbz93gvYpEh0HB6G3khSYbYStuXG61c5A-2FjtRDJQW-2FI6iz99rbuuv4-2B0OTtIp6lsp7Xw9Fv6vp1uIAtQRqx2LTtUUFJaXSHyAojpjL3otqi61AwBIf3YneRRpLJGu34X-2FY-2F-2BCunORGLwWOR7mPE84qW27TT-2BJJcDX8pF-2FCkguvO6-2FlGBXFtbO9uvmKM-3D" alt="" width="1" height="1" border="0" class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;"><span class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;"><span class="Apple-converted-space">&nbsp;</span>_______________________________________________</span><br class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><span class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">swift-evolution mailing list</span><br class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><a href="mailto:swift-evolution@swift.org" class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">swift-evolution@swift.org</a><br class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="" style="font-family: AvenirNext-Medium; font-size: 15px; font-style: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">-Dave</div><br class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=1MXK54sosN3xru3iYcLt0oBZ2w20i49gyogXctgrspdLkRgMP1CgQF37IBHoQWWE0cIYysRnCQm-2BTDV6TUEwv9mXliKlkYL1GKBQ0gbMLk-2BevrljGBlZF3TPAE0puNQRkd2RapXizpfwXQAVyAJv5xs-2FzWowH3hnzaMIPhg6GTBr8OmMNx0mHegqHZelaxlfjy5yMPCZvnai-2FHimIMsk4Hpl70cY60EE6cQO4ooks5M-3D" alt="" width="1" height="1" border="0" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space">&nbsp;</span>_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:swift-evolution@swift.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></div></body></html>