A critic of Guido's blog on Python's lambda

Thomas F. Burdick tfb at conquest.OCF.Berkeley.EDU
Sun May 7 12:55:50 CEST 2006


Ken Tilton <kentilton at gmail.com> writes:

> As for:
> 
> >  At a syntax-sugar
> > level, for example, Lisp's choice to use parentheses as delimiter means
> > it's undesirable, even unfeasible, to use the single character '(' as an
> > ordinary identifier in a future release of the language.
> 
> (defun |(| (aside) (format nil "Parenthetically speaking...~a." aside))
> => |(|
> (|(| "your Lisp /is/ rusty.")
> => "Parenthetically speaking...your Lisp /is/ rusty.."
> 
> :) No, seriously, is that all you can come up with?

Well, you have to quote your (s-as-identifiers.  I tried a goofy hack
of a reader macro for ( to make this parse:

  (let (( ( 10))) ( ))

[The spaces are just for readability, not necessary]

Alas, short of cps-transforming the whole reader, I can't see a
reasonable way to get that to parse as a single sexp that, when
evaluated, returns 10.  What my reader macro gave me was five sexps:

  \(, LET, \(, ((10)), NIL

I'll follow up with the Lisp code (on c.l.l only), in case I'm missing
something simple.

> OK, I propose a duel. We'll co-mentor this:
> 
>     http://www.lispnyc.org/wiki.clp?page=PyCells
> 
> In the end Python will have a Silver Bullet, and only the syntax will
> differ, because Python has a weak lambda, statements do not always
> return values, it does not have macros, and I do not know if it has
> special variables.

I have no idea what the big problem with a multi-line lambda is in
Python, but I wonder if Cells wouldn't run against the same thing.  I
often pass around anonymous formulas that eventually get installed in
a slot.  Seems annoying to have to name every formula with a
labels-like mechanism.



More information about the Python-list mailing list