[Tutor] Are you allowed to shoot camels? [kinda OT]
Jeff Shannon
jeff at ccvcorp.com
Thu Feb 3 22:59:38 CET 2005
Max Noel wrote:
> On Feb 3, 2005, at 09:48, Alan Gauld wrote:
>
>> Pythons lambda feature is a bare minimum (and Guido wants to remove
>> it!).
>
> Does he? Damn, just when I was learning functional programming! (in
> Haskell, if you're curious ^^)
However, Python doesn't need lambdas to be able to write in a
functional style. Functions are first-class objects and can be passed
around quite easily, and IIRC Python's list comprehensions were
borrowed (though probably with notable modification) from Haskell.
Keep in mind that both lambdas and named functions are created at
runtime, so the creation of both is fully dynamic. Indeed, there are
only a few differences between lambdas and named functions in Python:
- Anonymous vs named
- Single expression vs suite of statements
- Inline vs. pre-created
Note that the second of these is a consequence of the third -- given
Python's block-indentation-based structure, there's no good way to
inline a multi-statement suite (how many of those statements belong to
that 'if' suite?). Statements need to have a clear indentation level,
and while one can sometimes fudge that for a single statement, it gets
exponentially messier as the number of statements goes up.
I'd also argue that the inline nature is the *true* differentiating
feature of lambdas -- the fact that they're anonymous is relatively
minor. Consider, also, that if they weren't inline then you'd need a
name to refer to them by... and at that point, you *have* a 'normal'
function.
So, while there are some advantages to having single-use callables be
defined inline (i.e. lambdas), their removal from Python (which
wouldn't happen before the mythical Python 3k anyhow) isn't likely to
be as devastating as some might lead you to believe. ;) It certainly
won't prevent you from using Python for functional programming...
(And personally, I suspect that if lambdas *are* removed, they will be
replaced with a different construct that will fill the same needs in a
more Pythonic way...)
Jeff Shannon
Technician/Programmer
Credit International
More information about the Tutor
mailing list