[Python-ideas] add fluent operator to everything
Anders Hovmöller
boxed at killingar.net
Tue Feb 19 09:45:42 EST 2019
I would suggest a small improvement: allow a trailing :: which is useful for when the last function does not return anything. So for example this
[1,2,3].append(4)::sort()
will evaluate to None, but
[1,2,3].append(4)::sort()::
would evaluate to the list.
> On 19 Feb 2019, at 15:13, Jimmy Girardet <ijkl at netc.fr> wrote:
>
> Hi,
>
> 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):
> pass
>
>>> 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
> Jimmy
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
More information about the Python-ideas
mailing list