<div dir="ltr">Thanks Nick,<div><br></div><div>I'll adopt this approach when I update my teaching materials.</div><div><br></div><div>If I think of it, I"ll post here when I do that</div><div><br></div><div>-CHB</div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jul 15, 2018 at 12:21 AM, Nick Coghlan <span dir="ltr"><<a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 13 July 2018 at 15:30, Chris Barker via Python-Dev<br>
<span class=""><<a href="mailto:python-dev@python.org">python-dev@python.org</a>> wrote:<br>
> On Mon, Jul 9, 2018 at 3:18 PM, Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:<br>
>><br>
>> Definitely docs first. And we should keep references to generator<br>
>> expressions too, if only to explain that they've been renamed.<br>
>><br>
>> Perhaps someone should try it out in a 3rd party tutorial to see how it<br>
>> goes?<br>
><br>
><br>
> I'm not sure what "trying it out in a tutorial" would look like.<br>
><br>
> I try to be pretty clear about terminology when I teach newbies -- so I<br>
> don't want to tell anyone this new thing is called a "generator<br>
> comprehension" if they aren't going to see that term anywhere else.<br>
<br>
</span>Nina Zakharenko made the "they're officially called generator<br>
expressions, but I find it more helpful to think of them as generator<br>
comprehensions" observation in her PyCon 2018 presentation on "Elegant<br>
Solutions for Everyday Python Problems":<br>
<a href="https://www.slideshare.net/nnja/elegant-solutions-for-everyday-python-problems-pycon-2018/27" rel="noreferrer" target="_blank">https://www.slideshare.net/<wbr>nnja/elegant-solutions-for-<wbr>everyday-python-problems-<wbr>pycon-2018/27</a><br>
<br>
The article from Ned Batchelder mentioned in that slide is this one,<br>
which goes through the history of Raymond originally proposing the<br>
notion as generator comprehensions, them getting changed to generator<br>
expressions during the PEP 289 discussions, and then asking if it<br>
might be worth going back to the originally suggested name:<br>
<a href="https://nedbatchelder.com/blog/201605/generator_comprehensions.html" rel="noreferrer" target="_blank">https://nedbatchelder.com/<wbr>blog/201605/generator_<wbr>comprehensions.html</a><br>
<br>
And then in PEP 572, it was found that being able to group all 4<br>
constructs (list/set/dict comps + generator expressions) under a<br>
single term was a genuinely useful shorthand:<br>
<a href="https://www.python.org/dev/peps/pep-0572/#scope-of-the-target" rel="noreferrer" target="_blank">https://www.python.org/dev/<wbr>peps/pep-0572/#scope-of-the-<wbr>target</a><br>
<br>
So trying out the terminology in a tutorial context would be to do<br>
something similar to what Nina did in her talk: introduce the notion<br>
of list/set/dict/generator comprehensions, and then make a side note<br>
that the latter are officially referred to as "generator expressions".<br>
<br>
This wouldn't be the first time that terminology has differed between<br>
Python-as-commonly-taught and Python-as-formally-defined, as I've yet<br>
to hear anyone refer to container displays outside a language design<br>
discussion - everyone else calls them container literals (or, more<br>
typically, a literal for the specific builtin container type being<br>
discussed).<br>
<br>
In this case, though, we'd be considering eventually changing the<br>
language reference as well, and perhaps even some day the AST node<br>
name (from GeneratorExp to GeneratorComp).<br>
<br>
We wouldn't need to change anything in the grammar definition (since<br>
that already shares the comp_for and comp_if syntax definitions<br>
between container comprehensions and generator expressions), or the<br>
AST node structure (since GeneratorExp already uses a "comprehensions"<br>
attribute, the same as the ListComp/SetComp/DictComp nodes).<br>
<br>
Cheers,<br>
Nick.<br>
<span class="HOEnZb"><font color="#888888"><br>
-- <br>
Nick Coghlan   |   <a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a>   |   Brisbane, Australia<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R            (206) 526-6959   voice<br>7600 Sand Point Way NE   (206) 526-6329   fax<br>Seattle, WA  98115       (206) 526-6317   main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</div></div></div>