On Wed, Aug 5, 2020 at 8:14 PM Larry Hastings <la...@hastings.org> wrote: > It's interesting to consider how C# did it. For example, at the same time > they added pattern matching, they also added "discards", which are > (undeclared-only?) variables whose name starts with '_' and whose value is > never retained. I'm not sure, but I believe the language previously > permitted (and still permits) conventional variables that started with '_'. > My guess is that that's now discouraged, and new code is encouraged to only > use identifiers starting with '_' as discards. > > And, a minor correction: C# added pattern matching (and discards) in version > 7, though they did extend the syntax in version 8.
Yes, that was my goal when I asked about pattern matching added to a language after its initial design: maybe we could learn something about how to adopt this feature gradually instead of all at once. > > > Cheers, > > > /arry > > On 8/5/20 2:04 PM, Robert White wrote: > > Off the top of my head for recently happened and fairly mainstream language: > C# added it in 8.0 > https://docs.microsoft.com/en-us/archive/msdn-magazine/2019/may/csharp-8-0-pattern-matching-in-csharp-8-0 > > On Wed, Aug 5, 2020 at 3:33 PM Luciano Ramalho <luci...@ramalho.org> wrote: >> >> On Tue, Aug 4, 2020 at 1:37 PM Tobias Kohn <ko...@tobiaskohn.ch> wrote: >> > And experience from other programming languages who took the leap to having >> > pattern matching shows that it quickly becomes a quite intuitive and easy >> > to use feature. >> >> The languages I know about that have pattern matching had it from the >> start as a core feature. >> >> I am curious to learn about languages that adopted pattern matching >> later in their evolution. >> >> Cheers, >> >> Luciano >> >> >> > >> > Cheers, >> > Tobias >> > >> > P.S. Please excuse my late reply; I am currently on vacation. >> > >> > >> > >> > Quoting Larry Hastings <la...@hastings.org>: >> > >> > >> > >> > On 7/31/20 12:36 AM, Tobias Kohn wrote: >> > >> > And since pattern matching is really >> > a new feature to be introduced to Python, a feature that can >> > be seen in different lights, there is no 'Python-Programmer >> > intuition' that would apply in this case. >> > >> > It's not fair to say "intuition doesn't apply because it's new syntax". >> > There are plenty of examples of intuition serving a Python programmer well >> > when encountering new syntax. A Python programmer's intuition is informed >> > by existing syntax and conventions in the language. When they see a new >> > construct, its similarity to existing constructs can make understanding >> > the new syntax quite intuitive indeed. >> > >> > Take for example list comprehensions. Python 1 programmers hadn't seen >> > >> > a = [x for x in y] >> > >> > But they knew what square brackets meant in that context, it meant >> > "creates a new list". And they knew what "for x in y" meant, that meant >> > iteration. Understanding those separate two concepts, a Python 1 >> > programmer would be well on their way to guessing what the new syntax >> > meant--and they'd likely be right. And once they understood list >> > comprehensions, the first time they saw generator expressions and set and >> > dict comprehensions they'd surely intuit what those did immediately. >> > >> > The non-intuitiveness of PEP 622, as I see it, is that it repurposes what >> > looks like existing Python syntax but frequently has wholly different >> > semantics. For example, a "class pattern" looks like it's calling a >> > function--perhaps instantiating an object?--but the actual semantics and >> > behavior is very different. Similarly, a "mapping pattern" looks like >> > it's instantiating a dict, but it does something very different, and has >> > unfamiliar and seemingly arbitrary rules about what is permitted, e.g. you >> > can't use full expressions or undotted-identifiers when defining a key. >> > Add the "capture pattern" to both of these, and a Python programmer's >> > intuition about what this syntax traditionally does will be of little help >> > when encountering a PEP 622 match statement for the first time. >> > >> > Cheers, >> > >> > >> > >> > /arry >> > >> > >> > >> > _______________________________________________ >> > Python-Dev mailing list -- python-dev@python.org >> > To unsubscribe send an email to python-dev-le...@python.org >> > https://mail.python.org/mailman3/lists/python-dev.python.org/ >> > Message archived at >> > https://mail.python.org/archives/list/python-dev@python.org/message/2VRPDW4EE243QT3QNNCO7XFZYZGIY6N3/ >> > Code of Conduct: http://python.org/psf/codeofconduct/ >> >> >> >> -- >> Luciano Ramalho >> | Author of Fluent Python (O'Reilly, 2015) >> | http://shop.oreilly.com/product/0636920032519.do >> | Technical Principal at ThoughtWorks >> | Twitter: @ramalhoorg >> _______________________________________________ >> Python-Dev mailing list -- python-dev@python.org >> To unsubscribe send an email to python-dev-le...@python.org >> https://mail.python.org/mailman3/lists/python-dev.python.org/ >> Message archived at >> https://mail.python.org/archives/list/python-dev@python.org/message/PI44AV5C2F2IMO6PJSYVJOPXGQ62JMHQ/ >> Code of Conduct: http://python.org/psf/codeofconduct/ > > > _______________________________________________ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/PZMWDYELYFYRDV3TZ3B4KLEPCJPN4JFB/ > Code of Conduct: http://python.org/psf/codeofconduct/ > > _______________________________________________ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/CGR7J6B2XH3C5FF5HBJ76VAOEAWIXACH/ > Code of Conduct: http://python.org/psf/codeofconduct/ -- Luciano Ramalho | Author of Fluent Python (O'Reilly, 2015) | http://shop.oreilly.com/product/0636920032519.do | Technical Principal at ThoughtWorks | Twitter: @ramalhoorg _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/JY3P6NRQOISOD6AEYJLITUB5ECDUVSTF/ Code of Conduct: http://python.org/psf/codeofconduct/