map/filter/reduce/lambda opinions and background unscientific mini-survey

Christopher Subich spam.csubich+block at block.subich.spam.com
Thu Jul 7 18:33:37 EDT 2005


Terry Hancock wrote:
> With list comprehensions and generators becoming so integral, I'm
> not sure about "unpythonic".  And a syntax just occured to me --
> what about this:
> 
> [y*x for x,y]
> 
> ?
> 
> (that is:
> 
> [<expression> for <argument list>]
> 
> It's just like the beginning of a list comprehension or generator, but
> without the iterator.  That implies that one must be given, and
> the result is therefore a callable object.

As others have mentioned, this looks too much like a list comprehension 
to be elegant, which also rules out () and {}... but I really do like 
the infix syntax.

Perhaps using angle-brackets would be useful? These have no 
grouping-meaning in Python that I'm aware of.  Example,

<y*x for x,y>

I'd also prefer using 'with' rather than 'for' as the keyword -- 'with' 
doesn't suggest iteration.  I also suggest parenthization of the 
argument list, since that makes a zero-argument lambda not look weird.

To replicate the examples from 
http://wiki.python.org/moin/AlternateLambdaSyntax

1 lambda a, b, c:f(a) + o(b) - o(c)
   <f(a) + o(b) - o(c) with (a, b, c)>
2 lambda x: x * x
   <x * x with (x)>
3 lambda : x
   <x with ()>
4 lambda *a, **k: x.bar(*a, **k)
   <x.bar(*a, **k) with (*a, **k)>
5 ((lambda x=x, a=a, k=k: x(*a, **k)) for x, a, k in funcs_and_args_list)
   (<x(*a,**k) with (x=x, a=a, k=k)> for x, a, k in funcs_and_args_list)



More information about the Python-list mailing list