
In my previous post, I suggested that the status quo: iter(myobj) is superior to the suggested method-based syntax: myobj.iter() I stand by that. But I will give one exception, and suggest that so long as we don't have a good syntax for that, this request will never go away for long: Function and method chaining. Procedural/function syntax for chains of function calls suck. It is too verbose (heavy on parentheses) and written backwards: print(sort(filter(transform(merge(extract(data)), args)))) To understand it, you have to read forward to find the *last* function call, which is actually the *first* call, then read backwards. An alternative that works with mutable data is verbose and expensive in vertical real estate: data.extract() data.merge() data.transform(args) data.filter() data.sort() data.print() There is a powerful design pattern to fix this, that works great with immutable data and functions: https://martinfowler.com/articles/collection-pipeline/ Shells such as bash have an excellent syntax for this: data | extract | merge | transform args | filter | sort | print Method chaining is good too: data.extract().merge.transform(args).filter().sort().print() except for the downsides discussed previously. It would be very, very nice if we had syntactic sugar for that chain of function calls that would work on general functions and methods. A long time ago, I wrote a helper class to do that: https://code.activestate.com/recipes/580625-collection-pipeline-in-python/?i... Heavy data processing frameworks and libraries like Pandas already use method chaining extensively. It would be great if we could chain function calls. -- Steve