For the record, more than 80 messages into this thread, I am no longer interested in pursuing this. In any case, this is not the kind of thing Raymond would ever want to see added to itertools. Let's add a recipe for first() to the list of recipes in the itertools docs.
If people want to change itertools' philosophy to add essentially *all* the recipes to the module, putting more-itertools and itertoolz out of business, that's a PEP-worthy undertaking and maybe you can get the new Steering Council behind that. But (as is no secret) I'm not one of those functionally-minded people, and I don't use itertools much in my own hobby endeavors, so I won't mind much one way or another. On Tue, Dec 10, 2019 at 9:44 PM Andrew Barnert via Python-ideas < python-ideas@python.org> wrote: > On Dec 10, 2019, at 17:12, Tim Peters <tim.pet...@gmail.com> wrote: > > > > [Andrew Barnert <abarn...@yahoo.com>] > >> ... > >> I think you’re arguing that the philosophy of itertools is just wrong, > at least for > >> the kind of code you usually write with it and the kind of people who > usually > >> write that code. Is that fair, or am I misrepresenting you here? > > > > It's fair enough, although rather than "wrong" I'd say more that it's > > inappropriately applying design principles that work well in most of > > Python's libraries to an area where they don't. The very fact that > > half the itertools docs are devoted to "recipes" kinda suggests it > > knows it's leaving its intended audience hanging ;-) > > I don’t want to put words in Raymond’s mouth, but I don’t think he thought > he was leaving his audience hanging. People will build their own tools out > of the toolkit and decide what to share among them, and who knows where > it’ll go from there? And where it turned out to go from there is two big, > competing, still-evolving collections of tools on PyPI, and itertools even > links to one of them, which (at least for me) looks like success. > > But I suspect this is exactly what you mean by “principles that work well > in most of Python’s libraries”. Haskell doesn’t make you cabal install a > hackage to get first. And likewise for Clojure, F#, Scala, etc. (Hell, when > you npm install underscorejs, you don’t have to also go install > more_underscore as well to actually use it.) > > But I think Python is more dependent on its package ecosystem than most of > those languages (despite being the one that advertises “batteries > included”), and I’m not sure that’s a bad thing here any more than anywhere > else. The set of useful things you can build out of the toolkit doesn’t end > with the set that come with Clojure. > > >> Meanwhile, I think Guido and some others accept the itertools philosophy > > > > Don't know about Guido, but certainly applies to Raymond. > > Well, he probably wouldn’t have written it to that philosophy if he didn’t > agree with it. :) > > > I do like functional languages, and always have, so it seems to fall > > on me here to advocate for what those weirdos value. > > I’m one of those weirdos too. It may be almost an accident that Python > turned out to be a great language for lots of functional techniques that > other imperative languages didn’t discover until a decade or two later, but > it’s a very happy accident. > > > In part, no, the > > itertools namespace is not a precious resource that must be vigilantly > > minimized ;-) > > Sure, but it also doesn’t have to be maximized until it reaches parity > with Haskell if it works very well (again, at least for me) to let > third-party libraries compete to do that. That doesn’t mean it doesn’t ever > need to be extended _at all_, but I think the same conservative attitude > that works for the rest of Python actually does work fine here. (Although > maybe first does meet that conservative standard.) > > >> but argue that first needs to be there because many of the kinds of > people who > >> need it actually can’t just write it themselves (they don’t know about > 2-arg next, > >> or they don’t understand the subtleties of leaking StopIteration, or > whatever). > >> That’s a pretty different argument. (Not that there can’t be something > to both > >> arguments, of course.) > > > > And I expect Raymond would say `first()` isn't needed at all - if it > > has to be addressed, make it recipe #30. > > > > There's something to that argument too. > > Yes. I’m not sure I buy it in this case, but I do think it needs to be > answered: Why isn’t it sufficient to just add a first recipe (and anyone > who follows the link to more-itertools gets it that way)? But I think by > this point, we already have at least two answers (yours and Guido’s), it’s > just a question of working out whether either one is sufficient for someone > to go try to convince Raymond with it. > > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/ZCESLJFQ5LA3VB6WRPKGJOAU4HEVLQNL/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/3XTDLYX63DRCNTLONNUCSRHXS6OE6APC/ Code of Conduct: http://python.org/psf/codeofconduct/