[Python-Dev] Naming comprehension syntax [was Re: Informal educator feedback on PEP 572 ...]

Terry Reedy tjreedy at udel.edu
Sat Jul 7 00:01:23 EDT 2018

In response to Guido's reply to my post fleshing out my idea to use 
'generator|list|set|dict builder',
On 7/6/2018 7:58 PM, Ivan Pozdeev via Python-Dev wrote:

> According to https://en.wikipedia.org/wiki/List_comprehension#History, 
> the term's known from at least 1977 and comes from such influential 
> languages as NPL, Miranda and Haskell. So it's not you to blame for it :-)

"A list comprehension is a syntactic construct available in some 
programming languages for creating a list based on existing lists. It 
follows the form of the mathematical set-builder notation (set 
comprehension) as distinct from the use of map and filter functions."

Mathematicians do not always agree on terminology and notation.  I 
believe that 'set builder notatation' is both older and was and perhaps 
is more widespread than 'set comprehension'.  I have read that it is at 
least a century old.  But
does not seem to be the place

In any case, Python's comprehensions use an English-syntax version of 
extended set builder notation.  "In Python, the set-builder's braces are 
replaced with square brackets, parentheses, or curly braces, giving 
list, generator, and set objects, respectively. Python uses an 
English-based syntax."

>> Also, "generator builder" is not much more expressive than "generator 
>> expression",

I looked for an alternative 'x' to 'comprehension' such that 
'generator|list|set|dict x' works and is specific to the notation. 
'Builder' is a reasonable choice.

'expression' is way too general.  A 'list expression', for instance, is 
any expression that evaluated to a list.  In this context, I consider 
that the specific term 'says more' than the general term.

On the face of it, a generator expression is an expression that 
evaluates to a generator.  In this sense, 'f(args)', where f is a 
generator function, is a generator expression.  In any case, 'generator 
comprehension' is an awkward 8 syllable mouthful.

Terry Jan Reedy

More information about the Python-Dev mailing list