<div dir="ltr"><div>&gt; Then, the protocol author is responsible for providing a generic global trampoline operator that is constrained by the protocol type and delegates to the static operator on that type:<br></div><div><br></div><div>This feels like an unnatural &quot;hack&quot; to me. This proposal definitely needs more discussion.</div><div><br></div><div>Personally, I&#39;d prefer the following:</div><div>* allow `self` internal parameter name in functions</div><div>* move `prefix` and `postfix` to external parameter name</div><div><br></div><div>Example:</div><div><br></div><div>====begin====</div><div><br></div><div><div>protocol SomeProtocol {</div><div>    mutating func +(left self: Self, right: Self)</div><div>    func ~(prefix self: Self) -&gt; Self</div><div>    func -(postfix self: Self) -&gt; Self</div><div>}</div></div><div><br></div><div>struct SomeStruct : SomeProtocol {</div><div>    func +(left self: SomeStruct, right: SomeStruct)</div><div>    func ~(prefix self: Self) -&gt; Self</div><div>}</div><div><br></div><div>func -(postfix nonSelf: SomeStruct)</div><div><br></div><div>====end====</div><div><br></div><div><br></div><div><div>* What is your evaluation of the proposal?</div><div>As it stands, -1</div></div><div><br></div><div>* Is the problem being addressed significant enough to warrant a change to Swift?</div><div>Yes.</div><div><br></div><div>* Does this proposal fit well with the feel and direction of Swift?</div><div>No, I find that it is obscure and brings more &quot;magic&quot; into the language.</div><div><br></div><div>* If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</div><div>No.</div><div><br></div><div>* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</div><div>A quick reading.</div><div><br></div><div>- Anton</div></div>