<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>