<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">I'd vote for # 1 <br><br>Starting with "func" helps signal that the context is a function. (Though I know some things can precede "func".)<div> </div><div>Having the function name second is important to me: you don't have to scan further for its name.</div><div><br></div><div>Template arguments seem more important than capture lists, so I'd put it before the other.</div><div><br><div id="AppleMailSignature"><span style="background-color: rgba(255, 255, 255, 0);">--<br>C. Keith Ray</span><div><span style="background-color: rgba(255, 255, 255, 0);"><br></span></div><div><span style="background-color: rgba(255, 255, 255, 0);">* <a href="https://leanpub.com/wepntk">https://leanpub.com/wepntk</a> <- buy my book?<br>* </span><a href="http://www.thirdfoundationsw.com/keith_ray_resume_2014_long.pdf">http://www.thirdfoundationsw.com/keith_ray_resume_2014_long.pdf</a><span style="background-color: rgba(255, 255, 255, 0);"><br>* <a href="http://agilesolutionspace.blogspot.com/">http://agilesolutionspace.blogspot.com/</a></span></div></div><div><br>On Nov 12, 2017, at 8:11 PM, Brent Royal-Gordon via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:<br><br></div><blockquote type="cite"><div><br><span>1. func fn<T>[foo, bar](param: T) throws -> T where T: Equatable { … }</span><br><span>2. func fn[foo, bar]<T>(param: T) throws -> T where T: Equatable { … }</span><br><span>3. func [foo, bar] fn<T>(param: T) throws -> T where T: Equatable { … }</span><br><span>4. [foo, bar] func fn<T>(param: T) throws -> T where T: Equatable { … }</span></div></blockquote></div></body></html>