
On Tue, Nov 30, 2021 at 4:39 AM Christopher Barker <pythonchb@gmail.com> wrote:
On Mon, Nov 29, 2021 at 2:12 AM Steven D'Aprano <steve@pearwood.info> wrote:
Since most iterators don't have many methods, it's not clear to me that iterators are even a little bit relevant.
I think you just answered your own question.
Since iterators in general don’t have methods, they can not be chained. I believe the OP was suggesting that they have some methods so that they could be chained.
They cannot be chained using method lookups. One of the proposals is to have a different form of chaining, which passes the preceding object as a first parameter.
There are two tricks here:
1) What methods to add? There are literally an infinite number of possibilities.
2) there are multiple ways to create Iterators, how does one make these methods universal?
Both can be solved if the construct gets syntactic support rather than type support. For instance, if this: 1 |> add(2) is exactly equivalent to this: add(1, 2) then neither the iterator nor the consumer needs to be aware of the new protocol. I don't like that syntax though, and this will live or die on a good syntax. ChrisA