<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div></div><div><br></div><div><br>On Nov 8, 2016, at 1:05 PM, Anton Zhilin &lt;<a href="mailto:antonyzhilin@gmail.com">antonyzhilin@gmail.com</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">2016-11-08 23:43 GMT+03:00 Jose Cheyo Jimenez &lt;<a href="mailto:cheyo@masters3d.com" target="_blank">cheyo@masters3d.com</a>&gt;:</p>
<p style="margin:0px 0px 1.2em!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div 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/" target="_blank">https://realm.io/news/swift-<wbr>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-radius:4px;font-variant-ligatures: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?</span></div></div></div></blockquote><p></p></div><p style="margin:0px 0px 1.2em!important"></p>
<p style="margin:0px 0px 1.2em!important">Not much. We can talk about Swift literals being untyped as much as we want, but still all of them, except 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>, have an internal storage type, which is also picked by default.<br></p></div></div></div></blockquote><div>Having nil be a concrete type would be extremely confusing to me. I believe currently nil gets stripped out during compilation and it gets replaced with their respective Optional&lt;Type&gt;.none</div><div>&nbsp;nil is just a convenient way to work with optionals. The same goes to implicit unwrap optionals !</div><div><br></div><div>I guess I don't see a reason why nil should be a concrete at all. &nbsp;</div><br><blockquote type="cite"><div><div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">For example, integer literals are <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">Builtin.Int2048</code>, if I’m not mistaken. But we just can’t store <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> without creating an instance of a potentially complex type.</p>
<p style="margin:0px 0px 1.2em!important">And this proposal is not about adding <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> to all types. You can do this now with <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">Any</code>, in any case:</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)"><span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">let</span> optionalInt1: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Any</span> = <span class="hljs-number" style="color:rgb(0,128,128)">42</span>
<span class="hljs-keyword" style="color:rgb(51,51,51);font-weight:bold">let</span> optionalInt2: <span class="hljs-type" style="color:rgb(68,85,136);font-weight:bold">Any</span> = ()   <span class="hljs-comment" style="color:rgb(153,153,136);font-style:italic">// ewww</span>
</code></pre>
<div title="MDH:PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj4yMDE2LTEx
LTA4IDIzOjQzIEdNVCswMzowMCBKb3NlIENoZXlvIEppbWVuZXogPHNwYW4gZGlyPSJsdHIiPiZs
dDs8YSBocmVmPSJtYWlsdG86Y2hleW9AbWFzdGVyczNkLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmNo
ZXlvQG1hc3RlcnMzZC5jb208L2E+Jmd0Ozwvc3Bhbj46PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJn
bWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjogMHB4IDBweCAwcHggMC44ZXg7IGJvcmRlci1sZWZ0
OiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nLWxlZnQ6IDFleDsiPjxkaXYg
ZGlyPSJhdXRvIj48ZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImRpcmVjdGlvbjogaW5oZXJpdDsiPlRo
YW5rIGZvciB0aGlua2luZyBvZiB0aGlzLiBJIGFtIG5vdCBzdXJlIG9uIHRoZSBhZHZhbnRhZ2Ug
b2YgaGF2aW5nIG5pbCBhcyBhIGNvbmNyZXRlIHR5cGUuJm5ic3A7PC9kaXY+PGRpdiBzdHlsZT0i
ZGlyZWN0aW9uOiBpbmhlcml0OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImRpcmVjdGlvbjogaW5o
ZXJpdDsiPkhhdmUgeW91IHNlZW4gdGhpcyB0YWxrPzwvZGl2PjxkaXYgc3R5bGU9ImRpcmVjdGlv
bjogaW5oZXJpdDsiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJkaXJlY3Rpb246IGluaGVyaXQ7Ij48
cCBzdHlsZT0ibWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMTJweDsgbGluZS1oZWlnaHQ6IG5vcm1h
bDsgZm9udC1mYW1pbHk6IGhlbHZldGljYTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7
Ij48YSBocmVmPSJodHRwczovL3JlYWxtLmlvL25ld3Mvc3dpZnQtc3VtbWl0LWFsLXNraXBwLW1v
bmFkcy8iIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3JlYWxtLmlvL25ld3Mvc3dpZnQtPHdicj5z
dW1taXQtYWwtc2tpcHAtbW9uYWRzLzwvYT48L3NwYW4+PC9wPjwvZGl2PjxkaXY+PGRpdiBzdHls
ZT0iZGlyZWN0aW9uOiBpbmhlcml0OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImRpcmVjdGlvbjog
aW5oZXJpdDsiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAy
NTUsIDApOyI+IlRoZSBjb25jZXB0IG9mIOKAnG5pbOKAnSBkb2VzIG5vdCBleGlzdCBpbiBTd2lm
dCAoZGVzcGl0ZSB0aGUgZXhpc3RlbmNlIG9mIHRoZSBrZXl3b3JkJm5ic3A7PGNvZGUgc3R5bGU9
ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJvcmRlci1yYWRpdXM6IDRweDsgZm9udC12YXJpYW50
LWxpZ2F0dXJlczogbm9uZTsgbGluZS1oZWlnaHQ6IDEuMjVlbTsgb3ZlcmZsb3c6IGF1dG87IGJv
cmRlcjogbm9uZTsgcGFkZGluZzogMnB4IDVweDsiPm5pbDwvY29kZT4hKSI8L3NwYW4+PC9kaXY+
PGRpdiBzdHlsZT0iZGlyZWN0aW9uOiBpbmhlcml0OyI+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXYgc3R5
bGU9ImRpcmVjdGlvbjogaW5oZXJpdDsiPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2JhKDI1NSwgMjU1LCAyNTUsIDApOyI+RG9lcyB0aGF0IHRhbGsgY2hhbmdlIHlvdXIgbWluZCBh
Ym91dCB0aGlzIHBpdGNoPzwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRp
dj48YnI+PC9kaXY+PGRpdj5Ob3QgbXVjaC4gV2UgY2FuIHRhbGsgYWJvdXQgU3dpZnQgbGl0ZXJh
bHMgYmVpbmcgdW50eXBlZCBhcyBtdWNoIGFzIHdlIHdhbnQsIGJ1dCBzdGlsbCBhbGwgb2YgdGhl
bSwgZXhjZXB0IGZvciBgbmlsYCwgaGF2ZSBhbiBpbnRlcm5hbCBzdG9yYWdlIHR5cGUsIHdoaWNo
IGlzIGFsc28gcGlja2VkIGJ5IGRlZmF1bHQuPC9kaXY+PGRpdj5Gb3IgZXhhbXBsZSwgaW50ZWdl
ciBsaXRlcmFscyBhcmUgYDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDg0LCA4NCwgODQpOyI+QnVp
bHRpbi5JbnQyMDQ4YCwgaWYgSSdtIG5vdCBtaXN0YWtlbi4gQnV0IHdlIGp1c3QgY2FuJ3Qgc3Rv
cmUgYG5pbGAgd2l0aG91dCBjcmVhdGluZyBhbiBpbnN0YW5jZSBvZiBhIHBvdGVudGlhbGx5IGNv
bXBsZXggdHlwZS48L3NwYW4+PGJyPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2Io
ODQsIDg0LCA4NCk7Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiBy
Z2IoODQsIDg0LCA4NCk7Ij5BbmQgdGhpcyBwcm9wb3NhbCBpcyBub3QgYWJvdXQgYWRkaW5nIGBu
aWxgIHRvIGFsbCB0eXBlcy4gWW91IGNhbiBkbyB0aGlzIG5vdyB3aXRoIGBBbnlgLCBpbiBhbnkg
Y2FzZTo8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYig4NCwgODQsIDg0
KTsiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYig4NCwgODQs
IDg0KTsiPmBgYHN3aWZ0PC9zcGFuPjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiM1NDU0NTQiPmxl
dCBvcHRpb25hbEludDE6IEFueSA9IDQyPC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiM1
NDU0NTQiPmxldCBvcHRpb25hbEludDI6IEFueSA9ICgpICZuYnNwOyAvLyBld3d3PC9mb250Pjwv
ZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoODQsIDg0LCA4NCk7Ij5gYGA8L3NwYW4+
PC9kaXY+PC9kaXY+PC9kaXY+" 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></body></html>