<div dir="ltr">*please* let us not repeat the mostly avoidable challenging-to-explain-to-newcomers-and-vetarans-alike situation that we had in Obj-C with regard to `nil`.<div><br></div><div>nil</div><div>Nil</div><div>NULL</div><div>NSNull</div><div>nullptr</div>kCFNull<div>__DARWIN_NULL</div><div><br></div><div>are the representations of &#39;don&#39;t have&#39; that come to mind. </div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jun 5, 2016 at 2:39 PM, Charlie Monroe 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">While None is probably the best way to describe the opposite of Any, it would be often mistaken for .None (i.e. Optional) by newcomers to the language.<br>
<br>
I&#39;d personally prefer calling it &quot;Nil&quot; (capital N), which really means &quot;nonexistent&quot;. The same way ObjC had &quot;nil&quot; for &quot;id&quot; and &quot;Nil&quot; for Class. Possibly, to avoid confusion with nil, calling it Null? Though that might get confused with NSNull, once the NS prefix gets dropped.<br>
<br>
Or &quot;Nothing&quot; as in Scala.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; On Jun 5, 2016, at 8:26 PM, Антон Жилин via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; The following names were suggested: NoReturn, Bottom, None, Never.<br>
&gt; I would pick None, because it looks like opposite to Any and fits nicely in generic types.<br>
&gt;<br>
&gt; I would prefer the type to be simple, and be implemented as a case-less enum (not a bottom value, as in Haskell).<br>
&gt;<br>
&gt; None should be a usual enum, with no compiler magic except that functions returning None are equivalent to current @noreturn.<br>
&gt;<br>
&gt; Example 1.<br>
&gt; let x: None?<br>
&gt; // ...<br>
&gt; let y = x!<br>
&gt;<br>
&gt; It will trap in runtime not because we discover scary bottom thing, as in Haskell, but because x had value Optional.none at that moment and we asserted otherwise.<br>
&gt; We could prove that it is always true in this case, but compiler must be stupid about this.<br>
&gt;<br>
&gt; Example 2.<br>
&gt; Compiler should allow including None in structures. Error will show up in constructor, when we will not be able to initialize the field.<br>
&gt;<br>
&gt; Example 3.<br>
&gt; None in an enum case makes that case never appear in values of such a type. But compiler can not know about that.<br>
&gt;<br>
&gt; - Anton<br>
</div></div><div class="HOEnZb"><div class="h5">&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
&gt; <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>
_______________________________________________<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>
</div></div></blockquote></div><br></div>