On 3 Feb., 10:13, Arnaud Delobelle <[EMAIL PROTECTED]> wrote:
> On Feb 3, 5:09 am, Kay Schluehr <[EMAIL PROTECTED]> wrote:
>
>
>
> > As you know, there is no operator for function composition in Python.
> > When you have two functions F and G and  want to express the
> > composition F o G you have to create a new closure
>
> > lambda *args, **kwd: F (G (*args, **kwd))
>
> > or you write a composition in functional style
>
> > compose( F, G )
>
> > None of these solutions is particular terse.
>
> > Proposal
> > -------------
> > I want to propose overloading the logical __and__ operator i.e. '&'
> > for functions s.t. F & G means "compose(F,G)". This suggestion is non-
> > conflicting since & is not used as an operator in combination with
> > function objects yet: given a function object F and an arbitrary
> > object X the combination F & X raises a TypeError when evaluated.
>
> > Alternatives
> > -----------------
> > One could use other unused operators like F << G or F * G to write
> > terse function composition expressions. I' m not sure which one is
> > best and would use the proposed & if no one presents arguments against
> > it.
>
> What about other callable objects?
>
> --
> Arnaud

Supporting general callables would be very fine. I thing a callable
ABC with two protocols named __call__ and __compose__ would be most
adequate. I'm just not sure if Python 2.X requires a more ad hoc
implementation for builtin callable types? On the level of user
defined classes a bundling between __call__ and __compose__ shall
remain optional ( unlike e.g. the dependency between __iter__ and
__next__ for iterables ).
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to