While not as thorough solution as mentioned here in comments, UFCS goes a long way in this direction. In Next Generation Shell, I've designed the methods so that the first parameter is something that is likely to come from "the pipeline". Hence mylist.filter(...).map(...) just work. Combined with multiple dispatch and the fact that methods don't belong to a particular type/class, it allows creating user-defined methods with same convention to work with any existing and new types/classes.<p>UFCS - <a href="https://en.m.wikipedia.org/wiki/Uniform_Function_Call_Syntax" rel="nofollow">https://en.m.wikipedia.org/wiki/Uniform_Function_Call_Syntax</a>