<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div></div><div style="direction: inherit;">Thank for thinking of this. I am not sure on the advantage of having nil as a concrete type.&nbsp;</div><div style="direction: inherit;"><br></div><div style="direction: inherit;">Have you seen this talk?</div><div style="direction: inherit;"><br></div><div style="direction: inherit;"><p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica;"><span style="font-size: 12pt;"><a href="https://realm.io/news/swift-summit-al-skipp-monads/">https://realm.io/news/swift-summit-al-skipp-monads/</a></span></p></div><div><div style="direction: inherit;"><br></div><div style="direction: inherit;"><span style="background-color: rgba(255, 255, 255, 0);">"The concept of “nil” does not exist in Swift (despite the existence of the keyword&nbsp;<code style="box-sizing: border-box; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; font-variant-ligatures: none; position: relative; text-shadow: none; line-height: 1.25em; overflow: auto; border: none; padding: 2px 5px;">nil</code>!)"</span></div><div style="direction: inherit;"><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div style="direction: inherit;"><span style="background-color: rgba(255, 255, 255, 0);">Does that talk change your mind about this pitch?&nbsp;</span></div><div style="direction: inherit;"><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div style="direction: inherit;"><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div style="direction: inherit;"><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div style="direction: inherit;"><br></div><div style="direction: inherit;"><br></div>On Nov 8, 2016, at 12:30 PM, Anton Zhilin via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important"><a href="https://gist.github.com/Anton3/ba56a29986c59e9595368be3cb02fb1b">Gist link</a></p>
<h2 id="introduction" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Introduction</h2>
<p style="margin:0px 0px 1.2em!important">Change <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">nil</code> literal type from <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">()</code> to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Nil</code>.<br>Before:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-swift" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">protocol</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
  <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: ())
}
</code></pre>
<p style="margin:0px 0px 1.2em!important">After:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-swift" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">struct</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">Nil</span> </span>{
  <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>()
}
public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">protocol</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
  associatedtype <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span> = <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Nil</span>
  <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span>)
}
</code></pre>
<h2 id="motivation" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Motivation</h2>
<p style="margin:0px 0px 1.2em!important">Currently, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">nil</code> differs from other literals: it doesn’t have its own type.<br>But in some cases we want to deal directly with it, without creating any instances.</p>
<p style="margin:0px 0px 1.2em!important">The most important use case is comparison of an <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Optional</code> to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">nil</code>.<br>Currently, this operation is implemented using a hidden struct <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">_OptionalNilComparisonType</code>,<br>which is needed precisely because because <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">nil</code> does not have its own type.<br>Removal of such underscored types is one of the goals stated in Generics manifesto.</p>
<p style="margin:0px 0px 1.2em!important">Additionally, declaration of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExpressibleByNilLiteral</code> differs from all other <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Expressible</code>s,<br>because it doesn’t have a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Literal</code> type. It is generally beneficial to eliminate special cases.</p>
<h2 id="proposed-solution" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Proposed solution</h2>
<p style="margin:0px 0px 1.2em!important">Introduce a struct <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Nil</code>, which becomes the default type for <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">nil</code> literals:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-swift" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">struct</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">Nil</span> : <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
  <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>()
  <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span>)
}

<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">let</span> a = <span class="hljs-built_in" style="color:rgb(0,134,179)">nil</span>
<span class="hljs-built_in" style="color:rgb(0,134,179)">print</span>(type(of: a))   <span class="hljs-comment" style="color:rgb(153,153,136);font-style:italic">//=&gt; Nil</span>
</code></pre>
<p style="margin:0px 0px 1.2em!important">Rewrite <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExpressibleByNilLiteral</code>:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-swift" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-class"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">protocol</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold;color:rgb(68,85,136);font-weight:bold">ExpressibleByNilLiteral</span> </span>{
  associatedtype <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span> = <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Nil</span>
  <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">init</span>(nilLiteral: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">NilLiteralType</span>)
}
</code></pre>
<p style="margin:0px 0px 1.2em!important">Make use of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Nil</code> in the standard library:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code class="hljs language-swift" style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">public <span class="hljs-func"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">func</span> == <span class="hljs-generics">&lt;T&gt;</span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: T?, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: Nil)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> == <span class="hljs-generics">&lt;T&gt;</span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: Nil, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: T?)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> != <span class="hljs-generics">&lt;T&gt;</span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: T?, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: Nil)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> != <span class="hljs-generics">&lt;T&gt;</span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: Nil, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: T?)</span>
<span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">public</span> <span class="hljs-title" style="color:rgb(153,0,0);font-weight:bold">func</span> ~= <span class="hljs-generics">&lt;T&gt;</span><span class="hljs-params">(<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">left</span>: Nil, <span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">right</span>: T?)</span></span>
</code></pre>
<h2 id="source-compatibility" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Source compatibility</h2>
<p style="margin:0px 0px 1.2em!important"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Nil</code> identifier is taken, therefore applications that already use it will stop compiling.<br>Automatic migration is somewhat possible by renaming of the old entity; manual migration is recommended.</p>
<p style="margin:0px 0px 1.2em!important">Applications that use declare <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ExpressibleByNilLiteral</code> conformances will stop compiling.<br>Automatic migration is possible.</p>
<h2 id="effect-on-abi-stability" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Effect on ABI stability</h2>
<p style="margin:0px 0px 1.2em!important">Applications that use <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Nil</code> identifier will have to make ABI-breaking changes.</p>
<p style="margin:0px 0px 1.2em!important">Otherwise, the change can mostly be applied in an ABI-compatible manner.</p>
<div title="MDH:PGRpdj5bR2lzdCBsaW5rXShodHRwczovL2dpc3QuZ2l0aHViLmNvbS9BbnRvbjMvYmE1NmEyOTk4
NmM1OWU5NTk1MzY4YmUzY2IwMmZiMWIpPC9kaXY+PGRpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiMj
IEludHJvZHVjdGlvbjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Q2hhbmdlIGBuaWxgIGxpdGVy
YWwgdHlwZSBmcm9tIGAoKWAgdG8gYE5pbGAuPC9kaXY+PGRpdj5CZWZvcmU6PC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5gYGBzd2lmdDwvZGl2PjxkaXY+cHVibGljIHByb3RvY29sIEV4cHJlc3Np
YmxlQnlOaWxMaXRlcmFsIHs8L2Rpdj48ZGl2PiZuYnNwOyBpbml0KG5pbExpdGVyYWw6ICgpKTwv
ZGl2PjxkaXY+fTwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BZnRlcjo8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYHN3aWZ0PC9kaXY+PGRpdj5wdWJsaWMgc3RydWN0
IE5pbCB7PC9kaXY+PGRpdj4mbmJzcDsgaW5pdCgpPC9kaXY+PGRpdj59PC9kaXY+PGRpdj5wdWJs
aWMgcHJvdG9jb2wgRXhwcmVzc2libGVCeU5pbExpdGVyYWwgezwvZGl2PjxkaXY+Jm5ic3A7IGFz
c29jaWF0ZWR0eXBlIE5pbExpdGVyYWxUeXBlID0gTmlsPC9kaXY+PGRpdj4mbmJzcDsgaW5pdChu
aWxMaXRlcmFsOiBOaWxMaXRlcmFsVHlwZSk8L2Rpdj48ZGl2Pn08L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+IyMgTW90aXZhdGlvbjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+Q3VycmVudGx5LCBgbmlsYCBkaWZmZXJzIGZyb20gb3RoZXIgbGl0ZXJhbHM6IGl0IGRvZXNu
J3QgaGF2ZSBpdHMgb3duIHR5cGUuPC9kaXY+PGRpdj5CdXQgaW4gc29tZSBjYXNlcyB3ZSB3YW50
IHRvIGRlYWwgZGlyZWN0bHkgd2l0aCBpdCwgd2l0aG91dCBjcmVhdGluZyBhbnkgaW5zdGFuY2Vz
LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIG1vc3QgaW1wb3J0YW50IHVzZSBjYXNlIGlz
IGNvbXBhcmlzb24gb2YgYW4gYE9wdGlvbmFsYCB0byBgbmlsYC48L2Rpdj48ZGl2PkN1cnJlbnRs
eSwgdGhpcyBvcGVyYXRpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBoaWRkZW4gc3RydWN0IGBf
T3B0aW9uYWxOaWxDb21wYXJpc29uVHlwZWAsPC9kaXY+PGRpdj53aGljaCBpcyBuZWVkZWQgcHJl
Y2lzZWx5IGJlY2F1c2UgYmVjYXVzZSBgbmlsYCBkb2VzIG5vdCBoYXZlIGl0cyBvd24gdHlwZS48
L2Rpdj48ZGl2PlJlbW92YWwgb2Ygc3VjaCB1bmRlcnNjb3JlZCB0eXBlcyBpcyBvbmUgb2YgdGhl
IGdvYWxzIHN0YXRlZCBpbiBHZW5lcmljcyBtYW5pZmVzdG8uPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5BZGRpdGlvbmFsbHksIGRlY2xhcmF0aW9uIG9mIGBFeHByZXNzaWJsZUJ5TmlsTGl0ZXJh
bGAgZGlmZmVycyBmcm9tIGFsbCBvdGhlciBgRXhwcmVzc2libGVgcyw8L2Rpdj48ZGl2PmJlY2F1
c2UgaXQgZG9lc24ndCBoYXZlIGEgYExpdGVyYWxgIHR5cGUuIEl0IGlzIGdlbmVyYWxseSBiZW5l
ZmljaWFsIHRvIGVsaW1pbmF0ZSBzcGVjaWFsIGNhc2VzLjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+IyMgUHJvcG9zZWQgc29sdXRpb248L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkludHJvZHVj
ZSBhIHN0cnVjdCBgTmlsYCwgd2hpY2ggYmVjb21lcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBgbmls
YCBsaXRlcmFsczo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYHN3aWZ0PC9kaXY+PGRpdj5w
dWJsaWMgc3RydWN0IE5pbCA6IEV4cHJlc3NpYmxlQnlOaWxMaXRlcmFsIHs8L2Rpdj48ZGl2PiZu
YnNwOyBpbml0KCk8L2Rpdj48ZGl2PiZuYnNwOyBpbml0KG5pbExpdGVyYWw6IE5pbExpdGVyYWxU
eXBlKTwvZGl2PjxkaXY+fTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bGV0IGEgPSBuaWw8L2Rp
dj48ZGl2PnByaW50KHR5cGUob2Y6IGEpKSAmbmJzcDsgLy89Jmd0OyBOaWw8L2Rpdj48ZGl2PmBg
YDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmV3cml0ZSBgRXhwcmVzc2libGVCeU5pbExpdGVy
YWxgOjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgc3dpZnQ8L2Rpdj48ZGl2PnB1YmxpYyBw
cm90b2NvbCBFeHByZXNzaWJsZUJ5TmlsTGl0ZXJhbCB7PC9kaXY+PGRpdj4mbmJzcDsgYXNzb2Np
YXRlZHR5cGUgTmlsTGl0ZXJhbFR5cGUgPSBOaWw8L2Rpdj48ZGl2PiZuYnNwOyBpbml0KG5pbExp
dGVyYWw6IE5pbExpdGVyYWxUeXBlKTwvZGl2PjxkaXY+fTwvZGl2PjxkaXY+YGBgPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5NYWtlIHVzZSBvZiBgTmlsYCBpbiB0aGUgc3RhbmRhcmQgbGlicmFy
eTo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYHN3aWZ0PC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyA9PSAmbHQ7VCZndDsobGVmdDogVD8sIHJpZ2h0OiBOaWwpPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyA9PSAmbHQ7VCZndDsobGVmdDogTmlsLCByaWdodDogVD8pPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyAhPSAmbHQ7VCZndDsobGVmdDogVD8sIHJpZ2h0OiBOaWwpPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyAhPSAmbHQ7VCZndDsobGVmdDogTmlsLCByaWdodDogVD8pPC9kaXY+PGRpdj5wdWJsaWMgZnVu
YyB+PSAmbHQ7VCZndDsobGVmdDogTmlsLCByaWdodDogVD8pPC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PiMjIFNvdXJjZSBjb21wYXRpYmlsaXR5PC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj5gTmlsYCBpZGVudGlmaWVyIGlzIHRha2VuLCB0aGVyZWZvcmUgYXBwbGljYXRp
b25zIHRoYXQgYWxyZWFkeSB1c2UgaXQgd2lsbCBzdG9wIGNvbXBpbGluZy48L2Rpdj48ZGl2PkF1
dG9tYXRpYyBtaWdyYXRpb24gaXMgc29tZXdoYXQgcG9zc2libGUgYnkgcmVuYW1pbmcgb2YgdGhl
IG9sZCBlbnRpdHk7IG1hbnVhbCBtaWdyYXRpb24gaXMgcmVjb21tZW5kZWQuPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5BcHBsaWNhdGlvbnMgdGhhdCB1c2UgZGVjbGFyZSBgRXhwcmVzc2libGVC
eU5pbExpdGVyYWxgIGNvbmZvcm1hbmNlcyB3aWxsIHN0b3AgY29tcGlsaW5nLjwvZGl2PjxkaXY+
QXV0b21hdGljIG1pZ3JhdGlvbiBpcyBwb3NzaWJsZS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
PiMjIEVmZmVjdCBvbiBBQkkgc3RhYmlsaXR5PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BcHBs
aWNhdGlvbnMgdGhhdCB1c2UgYE5pbGAgaWRlbnRpZmllciB3aWxsIGhhdmUgdG8gbWFrZSBBQkkt
YnJlYWtpbmcgY2hhbmdlcy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk90aGVyd2lzZSwgdGhl
IGNoYW5nZSBjYW4gbW9zdGx5IGJlIGFwcGxpZWQgaW4gYW4gQUJJLWNvbXBhdGlibGUgbWFubmVy
LjwvZGl2PjwvZGl2Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</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></body></html>