| Store | Cart

Extending Python Syntax with @

From: David MacQuigg <d...@gain.com>
Wed, 10 Mar 2004 19:44:04 -0700
On Thu, 11 Mar 2004 01:28:47 -0000, claird at lairds.com (Cameron Laird)
wrote:

>In article <fkbv40dh57pk9527seaf3etjd0k7kncugc at 4ax.com>,>David MacQuigg  <dmq at gain.com> wrote:>			.>			.>			.>>Wouldn't it be nice, for example, if instead of special keywords like>>'lambda' and 'yield', we had used '@(args)' and '...@return'.  ( No, I'm>>not advocating we go back and change what has been done.)  In both>>these cases, we had a well-established syntax that needed a slight>>variation.  >>>>The 'lambda function' for example, was needed to cram a small block of>>code into a tight space.  By saying '@x,y:' instead of 'lambda x,y:',>>we not only avoid the need for a new keyword, but we better serve the>>purpose of tightly packing some code.  We would also avoid mystifying>>beginners.  "It has no magic meaning.  It's just a way to write a>>function without a name.">			.>			.>			.>No, for me it would be so far from nice I first suspected you>of jesting, because, from my background, "lambda" *does* have>a magic meaning, one that long precedes its (entirely apt) use>in Python.  For you, '@(args)' might indeed be more evocative;>for me, not calling a lambda "lambda" would be a big loss.>>I think APL and J (and Perl) are plenty meritorious.  I prefer>Python--much.

I guess this reflects our different backgrounds.  I've been an
electronic design engineer for many years.  I never heard of lambda's
or lambda calculus until learning Python, and the name still doesn't
evoke much meaning for me.  I've never used APL, J, or Perl.  I wonder
how many technical professionals who are *not* programmers would know
what a lambda is?  I wonder if Python is becoming more a language for
programmers, and less for "everyone".

My initial impression in learning Python was that 'lambda' was
something tricky.  Then it became clear it was just a way to cram a
function into a small space like an argument list, except that there
were some strange restrictions on what could be put in the function.
Even now, it seems like 'lambda x,y:' is awkward if you are trying to
save space.  It seems like we have paid a price for the dubious
assumption that most users will benefit from the magic meaning of
'lambda'.

Ruby uses a notation like |x,y|, which is compact, but I don't like
adding special punctuation for every little task. (The Perl problem.)
If the goal is to cram a function into a tight space, we could do it
compactly, and have the extra burden of the new syntax be shared by
many other features.  They key characteristic is that they are small
departures from existing features and syntax, so the symantic burden
is not carried by the @ symbol.  It's just a flag to modify something
already well understood.  All @X says is "I'm like X, but different."
You still need to learn about X.

Again, my intention is not to change lambda functions, but to propose
a better way of introducing new syntax to a language that already has
all the basics worked out.  I would rather have one special symbol
than a bunch of new keywords that mean nothing to me.

-- 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