<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 9, 2016, at 11:51 AM, Dave Abrahams &lt;<a href="mailto:dabrahams@apple.com" class="">dabrahams@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><blockquote type="cite" class="">On Mar 8, 2016, at 4:57 PM, Jon Hoffman &lt;<a href="mailto:hoffman.jon@gmail.com" class="">hoffman.jon@gmail.com</a>&gt; wrote:<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Mar 8, 2016, at 2:38 PM, Dave Abrahams &lt;<a href="mailto:dabrahams@apple.com" class="">dabrahams@apple.com</a>&gt; wrote:<br class=""><br class=""><br class="">on Tue Mar 08 2016, Michael Ilseman &lt;<a href="http://milseman-at-apple.com/" class="">milseman-AT-apple.com</a>&gt; wrote:<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""><blockquote type="cite" class="">What makes protocols in Swift different from Java interfaces (or<br class="">Objective-C protocols for that matter) is that they support static<br class="">polymorphism and generic programming.<br class=""></blockquote><br class="">Unless I am misunderstanding what you are saying here, Java<br class="">interfaces do support generic programming:<br class=""><a href="https://docs.oracle.com/javase/tutorial/extra/generics/simple.html" class="">https://docs.oracle.com/javase/tutorial/extra/generics/simple.html</a><br class="">&lt;<a href="https://docs.oracle.com/javase/tutorial/extra/generics/simple.html" class="">https://docs.oracle.com/javase/tutorial/extra/generics/simple.html</a>&gt;<br class=""><br class=""></blockquote><br class="">I think “static” is the operative word there.<br class=""></blockquote><br class="">Actually, “generic programming” are the operative words. &nbsp;I don't mean,<br class="">“does the language have a feature that it calls ‘generics?’”, I mean “does<br class="">it support the discipline of generic programming?”<br class=""><br class="">See:<br class=""><br class=""><a href="http://www.osl.iu.edu/publications/prints/2005/garcia05:_extended_comparing05.pdf" class="">http://www.osl.iu.edu/publications/prints/2005/garcia05:_extended_comparing05.pdf</a><br class=""><a href="https://books.google.com/books/about/From_Mathematics_to_Generic_Programming.html?id=UqxYBQAAQBAJ" class="">https://books.google.com/books/about/From_Mathematics_to_Generic_Programming.html?id=UqxYBQAAQBAJ</a><br class=""><br class=""></blockquote><br class="">I have always looked at Generics from a Java point of view because that is the language in which I started really using them with my code. &nbsp;</blockquote><div class=""><br class=""></div>Yeah, but it's not about "Generics." ;-) &nbsp;It's about Generic Programming, which is about raising algorithms to a higher level of generality and applicability without loss of efficiency. &nbsp;It's the foundation of the Swift standard library and close to the heart of Protocol-Oriented Programming. &nbsp;If you're going to be writing about POP, you really need to understand it. &nbsp;I very strongly recommend the Stepanov and Rose book linked above as a way into the topic (and see the&nbsp;<a href="http://www.amazon.com/Mathematics-Generic-Programming-Alexander-Stepanov/product-reviews/0321942043/ref=cm_cr_arp_d_paging_btm_next_2?ie=UTF8&amp;showViewpoints=1&amp;pageNumber=2" class="">reviews on Amazon</a>).</div></div></blockquote><div><br class=""></div><div>&nbsp;Thank you for the pointer. &nbsp;I will definitely check out the book you mention. &nbsp;If I have any questions, I will let you know :)</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class=""><blockquote type="cite" class="">I did start reading the document during my&nbsp;daughter’s TaeKwonDo class tonight and it does seem pretty interesting. &nbsp;I will have to make time to read it in the next few days. &nbsp;Page 4 of the document has a chart that shows how&nbsp;the different languages compare. &nbsp;I can see, just from the top of my head that Swift has better support than some of the languages however not as well as Haskell or SML. &nbsp;How do you&nbsp;see Swift currently comparing to the other languages and how do you see it comparing in the future?<br class=""></blockquote><br class=""></div><div class="">Swift is still a very young language and there's lots we still want to do to improve support for generic programming (see the thread&nbsp;<a href="http://news.gmane.org/find-root.php?message_id=B51F92BB%2dA966%2d4260%2d91A5%2d12772F771AD2%40apple.com" class="">[Manifesto] Completing Generics</a>). &nbsp;I expect we won't adopt all of the features of those other languages because some of them do not have a high enough value-to-complexity ratio.</div><div class=""><br class=""></div></div></div></blockquote><br class=""></div><div>I have only had a chance to glance through the Manifesto (been an incredibly busy day) but it looks like you have your work cut out for you :). &nbsp;I will have to go through the Manifesto more once I get through the PDF you pointed me to and the book. &nbsp;Feels like I went back to school :).</div><div><br class=""></div><div><br class=""></div><br class=""></body></html>