[Python-ideas] add fluent operator to everything

Jimmy Girardet ijkl at netc.fr
Tue Feb 19 09:13:14 EST 2019


There was the discussion about vector, etc...

I think I have a frustration about chaining things easily in python in
the stdlib where many libs like orm  do it great.

Here an example :

The code is useless, just to show the idea

>>> a = [1,2,3]

>>> a.append(4)

>>> a.sort()

>>> c = max(a) + 1

I would be happy to have

>>> [1,2,3].append(4)::sort()::max() +1

It makes things very easy to read: first create list, then append 4,
then sort, then get the max.

To resume, the idea is to apply via a new operator (::, .., etc...) the
following callable on the previous object. It's clearly  for standalone
object or after a method call when the return is None (there is fluent 
`.` when there is a return value)

>> object::callable()  = callable(object)
>> object(arg)::callable = callable(object(arg))

def callable(arg1,arg2):

>> object::callable(arg) == callable(object, arg)

The idea is to use quite everything as first argument of any callable.

I do not know if it was already discussed, and if it would be
technically doable.

Nice Day

More information about the Python-ideas mailing list