<div dir="ltr">Thank you Brent!<div>I forgot about the cases you described, where use of `-&gt;`, `!` or `?` cannot be expressed as operator functions.<br></div><div>The question is closed now, I guess.</div><div><br></div><div>- Anton</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-11 9:03 GMT+03:00 Brent Royal-Gordon <span dir="ltr">&lt;<a href="mailto:brent@architechies.com" target="_blank">brent@architechies.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">&gt; `-&gt;`, `?` and `!` are used in types, but they are mostly unambiguous in expressions.<br>
<br>
</span>Sure, but types can appear in the middle of expressions. If we drop the `.self` requirement, a type name will *be* an expression. I don&#39;t think you can just ignore type names.<br>
<span class=""><br>
&gt; The only use of `!` in expressions can be rewitten as a built-in operator function:<br>
&gt; postfix func ! &lt;T&gt; (left: T!) -&gt; T<br>
<br>
</span>This doesn&#39;t work because you can assign through an `!`. For instance:<br>
<br>
        numberDictionary[key]! += 1<br>
<br>
Once we have inout return values, we might be able to make `!` a normal postfix operator. (Actually, the same goes for `&amp;`, which just becomes a way to leverage the implicit `&amp;`ing of operator arguments into an explicit `&amp;`ing.)<br>
<span class=""><br>
&gt; `?` is used in optional method calls:<br>
&gt; a.method?(b)<br>
&gt; A parallel proposal is going to remove such syntax from Swift, so this will not be a problem.<br>
<br>
<br>
</span>`?` is used for a lot more than that in expressions: optional chaining, the ternary operator, etc. None of them can be expressed as ordinary operators without significantly expanding operator syntax.<br>
<br>
Sorry, I don&#39;t think we can make any real progress in this space without additional language features.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Brent Royal-Gordon<br>
Architechies<br>
<br>
</font></span></blockquote></div><br></div>