On Wed, Jul 04, 2018 at 11:13:20AM +1200, Greg Ewing wrote: > Terry Reedy wrote: > >If we had followed the math precedent, instead of <other computer > >language>, we would have set builders, list builders, dict builders, and > >generator builders. > > I was intending to suggest something like that back when > comprehensions were first being discussed, but people > raced ahead and adopted the term "comprehension" before > I got the chance. > > "List builder" and "dict builder" make a lot of sense, > but "generator builder" not so much -- it *is* a generator, > not something that builds a generator. In fact it doesn't > build anything in the sense that the others do. So maybe > "generator expression" is the best we could have done.
But [expr for x in seq] is a list, just as (expr for ...) is a generator. If you don't believe me, try it: py> type([x for x in (1,)]) <class 'list'> py> type(x for x in (1,)) <class 'generator'> So I think the similarity is complete. Further, if we think of "list builder" as an abbreviation of "list builder syntax", we have: - list builder syntax is syntax which returns a list; - dict builder syntax is syntax which returns a dict; - set builder syntax is syntax which returns a set; - generator builder syntax is syntax which returns a generator. Of course, there are other ways to build lists, such as calling the constructor, or using a list display ("list literal", except it isn't always a literal). But they're not *builder syntax* :-) In hindsight, I think "spam builder (syntax)" would have been better than the rather mysterious technical word "comprehension" and the not very felicitous term "generator expression". -- Steve _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com