[Python-Dev] Naming comprehension syntax [was Re: Informal educator feedback on PEP 572 ...]
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
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
>> Also, "generator builder" is not much more expressive than "generator
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