| Store | Cart

Extending Python Syntax with @

From: David MacQuigg <d...@gain.com>
Thu, 11 Mar 2004 08:57:58 -0700
On Thu, 11 Mar 2004 12:55:20 -0000, claird at lairds.com (Cameron Laird)
wrote:

>In article <2f9050pq22u53o7aqo9i8ebqj11vo9kilg at 4ax.com>,>David MacQuigg  <dmq at gain.com> wrote:>			.>			.>			.>>going to help me write some code, I won't have time to study it.  My>>understanding of lambda functions is simply that they are a way to>>squeeze functions into a tight space:>>>>list_of_funcs = [(lambda x: 2**x), (lambda x: 3**x), (lambda x: 4**x)]>>>>If you are not concerned about space, simply use normal defs:>>>>def f2(x): return 2**x>>def f3(x): return 3**x>>def f4(x): return 4**x>>list_of_funcs = [f2, f3, f4]>>>>Is there any other reason in Python to use lambdas?>			.>			.>			.>In fact, *that*'s not a reason.  Part of tribal lore--a true,>documented part, by the way--is that Big Cheese Guido depre->cates lambdas.  He says they're a mistake, and people shouldn't

Wow!!  And I thought it was just me.  Could you point me to a PEP or
other discussion?  I would sure like to know the history of this.
Could it be that in adding "lambda calculus" to Python, Guido was
snowed by the language theorists? <half wink>

I think it is really cool that a language can actually have a mistake
like this corrected.  In the commercial world I'm used to, such a
feature would become part of the core religion, and any questioning
would eventually be met with "There are just some things you can't
understand.  Get back to work!"

>be using 'em.  Whenever you feel like a lambda, define a named>function; it forces the developer to come up with a name for>the operation, and that's likely to make the code more read->able (I'm slightly abbreviating the argument here).>>Space, in the sense you're using it above, should NOT concern>Pythoneers.  Correctness and clarity of express should.

Agree 110%

>It pains my sensitivities every time you claim lambdas are>just a way of making functions "small".  Again, I understand>how natural that is from your background.  Around this >mathematician, 'twould be less distracting to run your finger->nails down a chalkboard.

Sorry for the pain, and many thanks for the enlightenment.

>I think this ties back to your broader original propositions:>the Python aesthetic assesses little merit for the brevity of>@-anything, and much for the presumed evocativeness of "yield".>An abundance of *good* keywords is a good thing.  That's>definitely not the attitude of all languages.

I agree that brevity in itself has little merit.  This whole
side-discussion on lambdas was on the presumption that brevity was the
intent.  I now think deprecation of this wart is the better
alternative.

The choice between adding a keyword and modifying an existing
statement with a standard 'modify' symbol may now be largely a matter
of personal preference.  ( 'yield' vs @return, 'self.x' vs @x ).
Still, there is a small syntactic burden added with each keyword.  We
just have to be careful that the benefit (evoking an instant meaning
to the majority of users) is actually realized.  

A new keyword 'printraw', would certainly do that.  It just doesn't
feel right to me, however.  So if we can't have
print @(separator = None) x,y,z
then I would opt for deprecating 'print' and going with the function
syntax proposed by Paul Prescod:
show(x,y,z, separator = None)

-- Dave

Recent Messages in this Thread
David MacQuigg Mar 10, 2004 09:01 pm
Wayne Folta Mar 10, 2004 09:24 pm
Jarek Zgoda Mar 10, 2004 09:26 pm
Jeff Epler Mar 10, 2004 09:31 pm
Ivan Voras Mar 10, 2004 09:49 pm
Erik Max Francis Mar 11, 2004 01:08 am
John Roth Mar 10, 2004 09:50 pm
Ben Finney Mar 10, 2004 10:19 pm
John Roth Mar 10, 2004 11:15 pm
Josiah Carlson Mar 12, 2004 05:08 pm
Y2KYZFR1 Mar 12, 2004 05:49 am
Max M Mar 12, 2004 09:59 am
John Roth Mar 12, 2004 12:05 pm
Heather Coppersmith Mar 11, 2004 02:05 am
Edward K. Ream Mar 10, 2004 11:02 pm
David MacQuigg Mar 11, 2004 12:40 am
Cameron Laird Mar 11, 2004 01:28 am
David MacQuigg Mar 11, 2004 02:44 am
Pierre Rouleau Mar 11, 2004 03:13 am
Christopher Koppler Mar 11, 2004 09:00 am
Isaac To Mar 11, 2004 01:54 am
Pierre Rouleau Mar 11, 2004 02:59 am
Christopher Koppler Mar 11, 2004 08:50 am
Nick Vargish Mar 11, 2004 02:28 pm
Peter Hickman Mar 11, 2004 02:50 pm
Cameron Laird Mar 11, 2004 03:24 pm
Peter Hickman Mar 12, 2004 09:50 am
John Roth Mar 12, 2004 12:07 pm
Peter Hickman Mar 12, 2004 12:19 pm
David MacQuigg Mar 11, 2004 08:05 pm
Roger Binns Mar 11, 2004 01:08 am
DH Mar 11, 2004 01:37 am
Roger Binns Mar 11, 2004 04:06 am
Steve Lamb Mar 11, 2004 01:43 am
Gustavo Niemeyer Mar 11, 2004 03:12 am
Paul McGuire Mar 11, 2004 03:17 am
Peter Maas Mar 11, 2004 12:15 pm
David MacQuigg Mar 11, 2004 04:35 pm
Peter Hansen Mar 11, 2004 05:01 pm
David MacQuigg Mar 11, 2004 05:57 pm
Ixokai Mar 14, 2004 05:17 am
Peter Maas Mar 11, 2004 08:42 pm
David MacQuigg Mar 11, 2004 11:44 pm
Raymond Hettinger Mar 11, 2004 10:15 pm
Paul Rubin Mar 11, 2004 11:24 pm
wmwd...@sneakemail.com ) (Greg Ewing (using news.cis.dfn.de) Mar 12, 2004 03:12 am
Bas Mar 12, 2004 08:07 pm
Peter Hansen Mar 12, 2004 10:17 pm
Donn Cave Mar 12, 2004 10:57 pm
Cameron Laird Mar 11, 2004 12:55 pm
Kyler Laird Mar 11, 2004 02:09 pm
Richie Hindle Mar 11, 2004 02:41 pm
David MacQuigg Mar 11, 2004 02:49 pm
Kyler Laird Mar 11, 2004 06:09 pm
David M. Cooke Mar 11, 2004 09:26 pm
Kyler Laird Mar 12, 2004 12:01 am
Myles Mar 12, 2004 12:05 am
John Roth Mar 11, 2004 02:37 pm
David MacQuigg Mar 11, 2004 03:57 pm
John Roth Mar 11, 2004 04:17 pm
David MacQuigg Mar 11, 2004 05:41 pm
John Roth Mar 11, 2004 06:03 pm
David MacQuigg Mar 11, 2004 09:24 am
Cameron Laird Mar 11, 2004 05:13 am
David MacQuigg Mar 11, 2004 08:42 am
Cameron Laird Mar 11, 2004 03:35 pm
Cameron Laird Mar 12, 2004 01:19 am
wmwd...@sneakemail.com ) (Greg Ewing (using news.cis.dfn.de) Mar 12, 2004 03:11 am
Messages in this thread

Previous post: backquote
Next post: backquote