[Python-3000] lambda

Neil Toronto ntoronto at cs.byu.edu
Thu Mar 27 17:19:12 CET 2008


Olivier Verdier wrote:
> On 26/03/2008, *Nick Coghlan* <ncoghlan at gmail.com 
>     Lambda calculus is a
>     well established field of mathematics, so it's a perfectly valid name
>     for the construct.
> 
> In my university in Sweden lambda calculus is never taught neither in 
> pure nor applied math. It is only a part of a course in computer science 
> applied to linguistics. The word "lambda" however is  used all over the 
> place as an eigenvalue, or a wave length, or parameter, or Lamé 
> coefficient in many of our courses.

Yep. In my seven years of CS instruction so far, I've only come across 
this once, in a theory of programming languages course. "Lambda" simply 
doesn't show up unless you do language theory or program in a Lisp... or 
in Python.

> I also agree with the idea that the lambda construct should rather use a 
> keyword free syntax like "x -> 3*x" or something of that kind. That 
> would be gorgeous.

How about reusing "def" to make a lambda expression?

     f = def x, y: x**2 + y**2

or

     f = def(x, y): x**2 + y**2

By the time someone comes across this:

     map(def(x): x**2, lst)

in code, they've already created plenty of functions using "def", so it 
should be immediately obvious what it's doing. It's a little less terse 
than Haskell's "\->" or Greg's "=>", but not much. It also frees up a 
keyword and doesn't create a new operator-ish looking one. Lastly, I 
can't imagine that it would be *too* difficult to parse, especially the 
variation with parenthesis.

Neil



More information about the Python-3000 mailing list