<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">John, IIRC you had some reason why this wasn't a great idea, but I can't remember it. It seems useful to me too, if not something that comes up <i class="">too</i> often.</div><div class=""><br class=""></div><div class="">Jordan</div><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 20, 2015, at 2:46 , Alexandre Lopoukhine via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hi Dmitri,<br class=""><br class="">This is a better example than any that I have come up with so far as to why “rethrows” should be a part of the signature. You shouldn’t have to use “try!” to apply a non-throwing function, like {print($0)} to “forEach”.<br class=""><br class="">— Sasha<br class=""><br class=""><br class=""><blockquote type="cite" class="">On 20 Dec 2015, at 13:37, Dmitri Gribenko <<a href="mailto:gribozavr@gmail.com" class="">gribozavr@gmail.com</a>> wrote:<br class=""><br class="">Hi Alexandre,<br class=""><br class="">I think for this use case we don't actually need 'rethrows' to become<br class="">a part of the closure type, we just need the compiler to allow and<br class="">"instantiate" it in more places.<br class=""><br class="">The case where we would need 'rethrows' to become a first class part<br class="">of the type system is if we wanted 'rethrows' to be a part of the<br class="">signature of the closure itself, for example:<br class=""><br class="">(swift) let forEach = [ 10, 20, 30 ].forEach<br class="">// forEach : (@noescape (Int) throws -> Void) throws -> () = (Function)<br class=""><br class="">Here, a more precise type would be (@noescape (Int) throws -> Void)<br class="">rethrows -> Void.<br class=""><br class="">Dmitri<br class=""><br class="">-- <br class="">main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if<br class="">(j){printf("%d\n",i);}}} /*Dmitri Gribenko <<a href="mailto:gribozavr@gmail.com" class="">gribozavr@gmail.com</a>>*/<br class=""></blockquote><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></div></blockquote></div><br class=""></body></html>