On 28 June 2017 at 07:13, Mike Miller <[email protected]> wrote:
>
> On 2017-06-27 14:05, Brendan Barnwell wrote:
>>
>> Even if this "chain" only took one argument, you could do
>> it1.chain(it2).chain(it3). But I don't see why it couldn't take multiple
>> arguments as you suggest.
>
> Right, and as I forgot to mention, making it a built-in is an uphill battle
> with higher backward compatibility concerns.
While I haven't been following this thread closely, I'd like to note
that arguing for a "chain()" builtin has the virtue that would just be
arguing for the promotion of the existing itertools.chain function
into the builtin namespace.
Such an approach has a lot to recommend it:
1. It has precedent, in that Python 3's map(), filter(), and zip(),
are essentially Python 2's itertools.imap(), ifilter(), and izip()
2. There's no need for a naming or semantics debate, as we'd just be
promoting an established standard library API into the builtin
namespace
3. Preserving compatibility with older versions is straightforward:
just do an unconditional "from itertools import chain"
4. As an added bonus, we'd also get "chain.from_iterable" as a builtin API
So it would be good to have a short PEP that argued that since
chaining arbitrary iterables is at least as important as mapping,
filtering, and zipping them, itertools.chain should be added to the
builtin namespace in 3.7+ (but no, I'm not volunteering to write that
myself).
As a *separate* discussion, folks could then also argue for the
additional of a `__lshift__` operator implementation specifically to
iterator chains that let you write:
full_chain = chain(it1) << it2 << it3 # Incrementally create new chains
full_chain <<= it4 # Extend an existing chain
I'd be surprised if such a proposal got accepted for 3.7, but it would
make a good follow-up discussion for 3.8 (assuming chain() made it
into the 3.7 builtins).
Cheers,
Nick.
--
Nick Coghlan | [email protected] | Brisbane, Australia
_______________________________________________
Python-ideas mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/