<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="">This was received from the suggestion box …<div class=""><br class=""></div><div class=""><br class=""></div><div class="">My thoughts on this: local functions are a potentially useful feature, and one that interacts nicely with the concise form, but the two features are orthogonal; there’s nothing to be gained by doing them together that is not gained by doing them sequentially in either order.  While I’ve got nothing against local functions, I would rather do local functions in the context of a more general cleanup about nesting constraints (e.g., restrictions on static fields of inner classes, private classes nested in interfaces, local interfaces and enums, etc.)  There’s a whole pile of “it makes sense to nest X in Y, but you can’t” irregularities that can be cleaned up at once — but I think there’s more immediate payback in doing the more constrained feature of concise method bodies first.  </div><div class=""><br class=""></div><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">Begin forwarded message:</div><br class="Apple-interchange-newline"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">From: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Lukas Eder <<a href="mailto:lukas.eder@gmail.com" class="">lukas.eder@gmail.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">Subject: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">JEP draft: Concise Method Bodies - extend this to local functions?</b><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">Date: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">September 19, 2018 at 4:44:04 PM EDT<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(0, 0, 0, 1.0);" class=""><b class="">To: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><a href="mailto:amber-spec-comments@openjdk.java.net" class="">amber-spec-comments@openjdk.java.net</a><br class=""></span></div><br class=""><div class=""><div class="">Hello,<br class=""><br class="">I've just seen this new JEP draft, which really looks very useful:<br class=""><a href="http://openjdk.java.net/jeps/8209434" class="">http://openjdk.java.net/jeps/8209434</a><br class=""><br class="">Now, given that this would be possible:<br class=""><br class="">    int x(String s) -> s.length();<br class=""><br class="">And given that this almost looks like a named lambda expression, could this<br class="">maybe be an occasion to re-discuss the possibility of supporting named<br class="">lambda expression / local functions?<br class=""><br class="">E.g.<br class=""><br class="">    void m() {<br class=""><br class="">        // lambda local to m()<br class="">        ToIntFunction<String> x1 = (String s) -> s.length();<br class=""><br class="">        // "method" local to m()<br class="">        int x2(String s) -> s.length();<br class=""><br class="">        // We can now do:<br class="">        int i1 = x1.apply("abc");<br class=""><br class="">        // More concise<br class="">        int i2 = x2("abc");<br class="">    }<br class=""><br class="">I know this was discussed for Java 8 and rejected, but given the high<br class="">similarity of the currently proposed concise method body syntax and the<br class="">lambda syntax, I feel that on a high level, this might appear coherent and<br class="">useful.<br class=""><br class="">Of course, in such a case, it would appear useful to allow the original<br class="">method body syntax as well in a local method:<br class=""><br class="">    void m() {<br class="">        int x3(String s) {<br class="">            return s.length();<br class="">        }<br class="">    }<br class=""><br class="">Also, many other languages have this feature, e.g. Scala, Ceylon, Kotlin<br class=""><br class="">Thanks,<br class="">Lukas<br class=""></div></div></blockquote></div><br class=""></div></body></html>