<div dir="ltr">Ah, thanks for the reference. I wasn’t aware of that proposal.<div><br></div><div>I wish currying wasn’t going away, but aside from that I think there’s still a strong case for flipping the arguments since it simply reads better for the arguments to follow the name of the method.</div><div><br></div><div><br></div><div><br></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Mar 14, 2016 at 1:09 PM Joe Groff &lt;<a href="mailto:jgroff@apple.com" target="_blank">jgroff@apple.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On Mar 12, 2016, at 1:46 PM, Brandon Williams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br><div><div dir="ltr">Right now instance methods on a type get a curried, static method for free, e.g. CGRect.insetBy is a curried function CGRect -&gt; (CGFloat, CGFloat) -&gt; CGRect. This is super cool and great for code reusability. <div><br></div><div>Unfortunately, I think the order of the curry makes it difficult to use most of the time. With the above example you would use it as such:</div><div><br></div><div>CGRect.insetBy(rect)(10.0, 10.0)</div><div><br></div><div>That doesn’t read very nicely, and it’s more likely that you know (10.0, 10.0) before you know rect, hence you would want to call it as:</div><div><br></div><div>CGRect.insetBy(10.0, 10.0)(rect)</div><div><br></div><div>In general, I would expect a method:</div><div><br></div><div>struct A {</div><div>  func method &lt;B, C&gt; (b: B) -&gt; C</div><div>}</div><div><br></div><div>to have a static method of the form</div><div><br></div><div>A.method: B -&gt; A -&gt; C</div><div><br></div><div>Does this make sense? Is there a reason for the current design that I’m not seeing?</div></div></div></blockquote><br></div></div><div style="word-wrap:break-word"><div>Note that there&#39;s a proposal open to flatten away the currying altogether:</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0042-flatten-method-types.md" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0042-flatten-method-types.md</a></div></blockquote><div><br></div><div>I agree that it would often be more useful to bind the non-self arguments first. Maybe we could provide a different shorthand for that, though; a number of people for instance have suggested `.insetBy(10.0, 10.0)` as a possibility.</div></div><div style="word-wrap:break-word"><div><br></div><div>-Joe</div></div></blockquote></div></div>