[Python-ideas] Function composition (was no subject)
Gregory Salvan
apieum at gmail.com
Sat May 9 18:08:12 CEST 2015
Hi,
I had to answer some of these questions when I wrote Lawvere:
https://pypi.python.org/pypi/lawvere
First, there is two kind of composition: pipe and circle so I think a
single operator like @ is a bit restrictive.
I like "->" and "<-"
Then, for function name and function to string I had to introduce function
signature (a tuple).
It provides a good tool for decomposition, introspection and comparison in
respect with mathematic definition.
Finally, for me composition make sense when you have typed functions
otherwise it can easily become a mess and this make composition tied to
multiple dispatch.
I really hope composition will be introduced in python but I can't see how
it be made without rethinking a good part of function definition.
2015-05-09 17:38 GMT+02:00 Ron Adam <ron3200 at gmail.com>:
>
>
> On 05/09/2015 03:21 AM, Andrew Barnert via Python-ideas wrote:
>
>> >I suppose you could write (root @ mean @ (map square)) (xs),
>>>
>>
> Actually, you can't. You could write (root @ mean @ partial(map,
>> square))(xs), but that's pretty clearly less readable than
>> root(mean(map(square, xs))) or root(mean(x*x for x in xs). And that's
>> been my main argument: Without a full suite of higher-level operators
>> and related syntax, compose alone doesn't do you any good except for toy
>> examples.
>>
>
> How about an operator for partial?
>
> root @ mean @ map $ square(xs)
>
>
> Actually I'd rather reuse the binary operators. (I'd be happy if they
> were just methods on bytes objects BTW.)
>
> compose(root, mean, map(square, xs))
>
> root ^ mean ^ map & square (xs)
>
> root ^ mean ^ map & square ^ xs ()
>
> Read this as...
>
> compose root, of mean, of map with square, of xs
>
> Or...
>
> apply(map(square, xs), mean, root)
>
> map & square | mean | root (xs)
>
> xs | map & square | mean | root ()
>
>
> Read this as...
>
> apply xs, to map with square, to mean, to root
>
>
> These are kind of cool, but does it make python code easier to read? That
> seems like it may be subjective depending on the amount of programming
> experience someone has.
>
> Cheers,
> Ron
>
>
>
>
>
> _______________________________________________
> 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/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150509/cb3ad4c7/attachment-0001.html>
More information about the Python-ideas
mailing list