<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 Sep 7, 2018, at 2:41 PM, Brian Goetz <<a href="mailto:brian.goetz@oracle.com" class="">brian.goetz@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">I've updated the documents regarding pattern matching, and uploaded them here:<br class=""><br class=""><a href="http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html" class="">http://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html</a><br class=""></div></div></blockquote><div><br class=""></div>"<span style="background-color: rgb(255, 255, 255);" class=""><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">if the data structure is a tree represents a design in a CAD application” => "</font></span><span style="font-family: 'Bitstream Vera Sans', Verdana, 'sans serif'; font-size: medium; background-color: rgb(255, 255, 255);" class="">if the data structure is a tree that represents a design in a CAD application</span><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">” (add “that”)</font></div><div><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class=""><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></font></div><div><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class=""><span style="background-color: rgb(255, 255, 255);" class="">"</span></font><span style="background-color: rgb(232, 232, 232);" class=""><font face="courier new, monospace" size="3" class=""><b class="">case AddNode(Node left, Node right)) -> …” => "</b></font></span><span style="background-color: rgb(232, 232, 232);" class=""><font face="courier new, monospace" size="3" class=""><b class="">case AddNode(Node left, Node right) -> …</b></font></span><font face="courier new, monospace" size="3" class=""><b class="">” </b></font><span style="font-family: 'Bitstream Vera Sans', Verdana, 'sans serif'; font-size: medium; background-color: rgb(255, 255, 255);" class="">(delete extraneous right paren)</span></div><div><span style="background-color: rgb(232, 232, 232);" class=""><font face="courier new, monospace" size="3" class=""><b class=""><br class=""></b></font></span></div><div><span style="background-color: rgb(255, 255, 255);" class=""><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">At end of section “Composing patterns”, show an actual example of multiply nested patterns, such as "AddNode(Node x, IntNode(int n))”.</font></span></div><div><span style="background-color: rgb(255, 255, 255);" class=""><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class=""><br class=""></font></span></div><div><span style="background-color: rgb(255, 255, 255);" class=""><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">"</font></span><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">whether the manifest type adds or distracts from readability and maintainability” => "whether the manifest type adds to or distracts from readability and maintainability” (add “to”)</font></div><div><span style="font-family: 'Bitstream Vera Sans', Verdana, 'sans serif'; font-size: medium; background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div><span style="font-family: 'Bitstream Vera Sans', Verdana, 'sans serif'; font-size: medium; background-color: rgb(255, 255, 255);" class="">"</span><span style="background-color: rgb(255, 255, 255);" class=""><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">it is also reasonably to have” => "</font></span><span style="font-family: 'Bitstream Vera Sans', Verdana, 'sans serif'; font-size: medium; background-color: rgb(255, 255, 255);" class="">it is also reasonable to have</span><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">”</font></div><div><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class=""><br class=""></font></div><div><font face="Bitstream Vera Sans, Verdana, sans serif" size="3" class="">It’s worth pointing out that one possible spelling of “__let” is to use no token at all.  Then certain degenerate cases are the same as when using a local variable declaration with initializer.</font></div><div><br class=""></div><div class=""><blockquote type="cite" class=""><div class=""><div class=""><a href="http://cr.openjdk.java.net/~briangoetz/amber/pattern-semantics.html" class="">http://cr.openjdk.java.net/~briangoetz/amber/pattern-semantics.html</a><br class=""><br class="">The first document is an update of a previous document (old version available here: http://cr.openjdk.java.net/~briangoetz/amber/pattern-match_1.html), and outlines the general arc of the feature and general motivation.<br class=""><br class="">The second captures the discussions we've had regarding the messy details of typing, scoping, nullability, shadowing, etc.  I think we've made a lot of progress on these.<br class=""><br class="">We would not implement this all at once; we'd proceed incrementally, probably starting with type patterns in `instanceof`, and then proceeding to `switch` or to deconstruction patterns.<br class=""><br class="">Please review and comment.<br class=""><br class=""></div></div></blockquote></div><br class=""></body></html>